python中的正则表达式匹配无法正常工作 - 重叠匹配?

时间:2014-02-20 20:03:42

标签: python regex non-greedy

我正在试验regex lazy matches。 当我尝试这个时:

>>> text='<em>Hello <>World</em>'
>>> pattern3=re.compile('<.*?>')
>>> for mat in re.findall(pattern3,text):
...     print mat
... 
<em>
<>
</em>

它按预期工作,并提供可能的三个匹配 但是当我尝试这个时:

>>> text="1011"
>>> pattern1=re.compile('1.*?1')
>>> for mat in re.findall(pattern1,text):
...     print mat
... 
101

我只获得一个输出,但我应该101 and 11,为什么11没有匹配。 我的regex '1.*?1'会查找1后跟0或更多内容,再次1

1 个答案:

答案 0 :(得分:0)

您是否尝试过重叠匹配?

pattern1=re.compile('(?=(1.*?1))')