Python-如何使用正则表达式查找重叠的匹配项?
>>> match = re.findall(r'\w\w', 'hello')>>> print match
['he', 'll']
由于\ w \ w
表示两个字符,因此应使用'he'
和'll
‘。但是,为什么“ el”
和“ lo”
与正则表达式不匹配?
>>> match1 = re.findall(r'el', 'hello')>>> print match1
['el']
>>>
回答:
findall
默认情况下不会产生重叠匹配。但是,此表达式可以:
>>> re.findall(r'(?=(\w\w))', 'hello')['he', 'el', 'll', 'lo']
这(?=...)
是一个前瞻性断言:
(?=...)
如果…下一个匹配,则匹配,但不使用任何字符串。这称为先行断言。例如, 仅在后跟Isaac (?=Asimov)
时匹配。'Isaac ''Asimov'
以上是 Python-如何使用正则表达式查找重叠的匹配项? 的全部内容, 来源链接: utcz.com/qa/405195.html