Python mulltiline+多任务正则表达式需要解决方案

2024-06-16 10:07:36 发布

您现在位置:Python中文网/ 问答频道 /正文

需要帮助提取包含多个标记的多行标记。。 例如:

<div class="box_update_userdetails_upate">50% discount 4 our members for the items that r put 4 sale.<br />
Send<br />
Join 4sale<br />
9219592195</div>

<div class="box_update_userdetails_upate">Big Offr 4 Our Grp MemBrs:<br />
Jst Add Ur 5 Frns and Gain a Recharge Of 20rs In ur Mob no.<br />
Details<br />
9496360235<br />
addfrn</div>

数据中可能有许多
或换行符。我需要提取任何写在<div class="box_update_userdetails_upate"></div>之间的内容,包括所有<br />或除<br />之外的内容。你知道吗

我试过使用"<div class="box_update_userdetails_upate">(.+?)</div>",但这并不适用于所有人。只有在没有换行符或中断标记的情况下,这种方法才有效。。你知道吗


Tags: the标记brdivbox内容forour
2条回答

我想你要找的是这个。你知道吗

"<div class=\"box_update_userdetails_upate\">(.|\n)*</div>"

中间的组将匹配两个div之间的所有字符。您的主要问题是.在Python正则表达式中通常与换行符不匹配。注意,如果您有一个嵌套的div,例如<div>...<div>...</div>...</div>*操作符是贪婪的,因此它将捕获尽可能多的文本。换句话说,它将一直持续到它能找到的最后一个</div>。你知道吗

这里引用一个著名的答案,使用正则表达式来解析html是不好的。你知道吗

def extract(starttag, endtag, text):
    ret = re.compile(r'{a}(.*){b}'.format(a=starttag,b=endtag), re.IGNORECASE).search(text).group(1)
    return ret

这应该可以处理多个div标记,但是它会在输出中包含div标记的下一个实例,但是一个简单的替换就可以解决这个问题

相关问题 更多 >