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

发布于 2021-02-02 23:21:03

>>> 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']
>>>
关注者
0
被浏览
221
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看