在 Python 中使用正则表达式匹配多个嵌套的 div
标签可以使用以下语法:
import re
html = '<div>content1<div>content2<div>content3</div></div></div>'
# 匹配所有 div 标签
match = re.findall(r'<div>(.*?)</div>', html, re.DOTALL)
# 输出所有匹配到的内容
for m in match:
print(m)
这段代码中使用了 re.findall()
函数来匹配所有的 div
标签。正则表达式 r'<div>(.*?)</div>'
中的 .*?
是一个贪婪匹配,表示匹配任意多个字符,直到找到第一个匹配的内容。
使用re.DOTALL 是为了让 . 匹配包括换行符在内的所有字符。
这段代码会输出三个内容,分别为:
content1<div>content2<div>content3
content2<div>content3
content3
如果只需要匹配第一层的话,可以使用 lookahead 和 lookbehind 的限定条件来匹配,像这样:
import re
html = '<div>content1<div>content2<div>content3</div></div></div>'
match = re.findall(r'(?<=<div>)[\s\S]*?(?=</div>)',html)
for m in match:
print(m)
这样就只会匹配到最外层的div了
这只是一个简单的例子,实际上在处理复杂的 HTML 文档时,可能需要使用更复杂的正则表达式或其他 HTML 解析库。
评论 (0)