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

回到顶部