s = '''<p>Plain text, <i>italicized phrase,
<i>italicized subphrase</i>, <b>bold
subphrase</b></i>, <i>other italic
phrase</i></p>'''
r1 = r'''(?sx)(
<i>(
(?!</?i>).
|
<i> ( (?!</?i>). )* </i>
)*</i>
)'''
我使用r1模式捕获字符串s中的<i>...</i>
。
但无法捕获<i>italicized subphrase</i>
。
为什么呢?
我不是真正处理HTML代码,而是与HTML的嵌套结构类似!我只是以这些代码为例。 我的问题是如何只在一个图层嵌套结构中捕获嵌套和嵌套标记。
答案 0 :(得分:2)
您正在使用正则表达式,并且将XML与此类表达式匹配得到too complicated, too fast。
请不要让自己变得困难并使用HTML解析器,Python有几个可供选择:
ElementTree示例:
from xml.etree import ElementTree
tree = ElementTree.parse('filename.html')
for elem in tree.findall('i'):
print ElementTree.tostring(elem)