需要帮助提取包含多标签的多行标签.. 例如:
<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>"
,但这对所有人都不起作用。这种方式只有在中间没有换行符或断点标记时才有效。
答案 0 :(得分:0)
我认为你在寻找的是这个。
"<div class=\"box_update_userdetails_upate\">(.|\n)*</div>"
中间的组将匹配两个div之间的所有字符。您的主要问题是.
通常与Python正则表达式中的换行符不匹配。请注意,如果您有嵌套div,例如<div>...<div>...</div>...</div>
*
运算符是贪婪的,那么它将捕获尽可能多的文本。换句话说,它将一直持续到它能够找到的最后一个</div>
。
答案 1 :(得分:0)
在这里引用一个着名的答案,使用正则表达式解析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标签的下一个实例,但是一个简单的替换会处理这个