我试图找出输入文本中子字符串的非重叠匹配。 E.g:
在'aaadaa'中找到'aa'的出现次序
print(re.findall(r'aa', 'aaadaa'))
按预期打印['aa', 'aa']
,因为它找到了不重叠的
使用环顾四方(这里是积极的向前看)
print(re.findall(r'(?=(aa))', 'aaadaa'))
打印['aa', 'aa', 'aa']
需要输入才能了解上述工作原理
答案 0 :(得分:3)
aaadaa
--
1
--
2
--
3
在预测中,即使在成功匹配后它也可以回溯,因为它不会消耗字符串。它只是一个断言。
没有预测,一旦消耗了第一个aa
,正则表达式引擎将向前移动。