需要了解如何使用环视来提取非重叠序列

时间:2018-03-27 11:49:37

标签: python regex python-3.x

我试图找出输入文本中子字符串的非重叠匹配。 E.g:

  

在'aaadaa'中找到'aa'的出现次序

print(re.findall(r'aa', 'aaadaa')) 

按预期打印['aa', 'aa'],因为它找到了不重叠的

使用环顾四方(这里是积极的向前看)

print(re.findall(r'(?=(aa))', 'aaadaa'))

打印['aa', 'aa', 'aa']

需要输入才能了解上述工作原理

1 个答案:

答案 0 :(得分:3)

aaadaa
--
 1
 --
  2
    --
     3

在预测中,即使在成功匹配后它也可以回溯,因为它不会消耗字符串。它只是一个断言。
没有预测,一旦消耗了第一个aa,正则表达式引擎将向前移动。