Python Regex在查找匹配项时会考虑重叠标记

时间:2017-03-20 20:05:10

标签: python regex xml overlap

当我用Python锻炼自己时,正则表达式似乎总是一个棘手的话题。 我试图在两个标签之间提取所有文本时遇到困难。我想出了这段代码:

m=re.compile('<div id="test">(.*?)<div id="test">', re.DOTALL).search(str(soup))

在这种情况下,soup是XML / HTML的BeautifulSoup对象,包含多次出现的标记。我写的片段为我提供了比赛,但不是我想要的。正则表达式查找提供的标签之间的所有文本,但我也想为每个标签获取此文本,因此发生重叠。 很难解释,但我将在下面举一个简短的例子:

<div id="test">
   text
</div>
<div id="test">
   more text
</div>
<div id="test">
   even more text
</div> 
<div id="test">..........

我的正则表达式的输出应该是: [&#39; text&lt; / div&gt;&#39;,&#39;更多文字&lt; / DIV&GT; &#39;,&#39;更多文字&lt; / DIV&GT;&#39;]

使用错误的正则表达式代码运行的输出仅为: &#39; text&lt; / div&gt;&#39;,因为它只会在开始和结束的正则表达式输入上迭代一次。

0 个答案:

没有答案