-1
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>
)'''

<i>...</i>我使用 r1 模式在字符串 s中捕获。但<i>italicized subphrase</i>不能被捕获。为什么?

我不是真的在处理 HTML 代码,而是与 HTML 的嵌套结构类似的东西!我只是以这些代码为例。 我的问题是如何仅在一层嵌套结构中捕获嵌套和嵌套标签。

4

1 回答 1

2

您正在使用正则表达式,并且将 XML 与此类表达式匹配变得太复杂、太快

请不要为难自己,而是使用 HTML 解析器,Python 有几个可供选择:

元素树示例:

from xml.etree import ElementTree

tree = ElementTree.parse('filename.html')
for elem in tree.findall('i'):
    print ElementTree.tostring(elem)
于 2013-01-04T07:47:53.673 回答