一尘不染

Python-如何使用正则表达式查找重叠的匹配项?

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']
>>>

阅读 395

收藏
2020-02-12

共1个答案

一尘不染

findall默认情况下不会产生重叠匹配。但是,此表达式可以:

>>> re.findall(r'(?=(\w\w))', 'hello')
['he', 'el', 'll', 'lo']

(?=...)是一个前瞻性断言:

(?=...)如果…下一个匹配,则匹配,但不使用任何字符串。这称为先行断言。例如, 仅在后跟Isaac (?=Asimov)时匹配。'Isaac ''Asimov'

2020-02-12