This question already has answers here:
How to find overlapping matches with a regexp?
(4个答案)
四年前关闭。
import re

line = 'Here is my probblem, brother!'

t = re.findall('..b', line)

print(t)

这张照片:
['rob', ', b']

但它应该在“problem”中找到“obb”。为什么?

最佳答案

因为.将匹配一个字符,在本例中,您有'ro'', ',后面跟着一个b。对于finall()函数与重叠模式不匹配这一点,如果要匹配这些模式,可以使用positive look ahead并将您的模式放入捕获组:

>>> t = re.findall('(?=(..b))', line)
>>> t
['rob', 'obb', ', b']

关于python - 关于正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33585880/

10-13 09:11