正则表达式字符串和子字符串

Sum*_*mit 10 python regex substr

我有一个字符串'aabaacaba'.从左边开始,我试图得到所有大小> = 2的子串,后面会出现在字符串中.例如,aa再次出现在字符串中,情况也是如此ab.

我写了以下正则表达式代码:

re.findall(r'([a-z]{2,})(?:[a-z]*)(?:\1)', 'aabaacaba')
Run Code Online (Sandbox Code Playgroud)

我得到['aa']作为答案.正则表达式错过了ab模式.我认为这是因为人物重叠.请建议一个解决方案,以便修复表达式.谢谢.

fal*_*tru 9

您可以使用不使用匹配字符串的前瞻断言:

>>> re.findall(r'(?=([a-z]{2,})(?=.*\1))', 'aabaacaba')
['aa', 'aba', 'ba']
Run Code Online (Sandbox Code Playgroud)

注意:aba匹配而不是ab.(尽可能长时间匹配)

  • @Sumit,没有第一个前瞻断言,第一个匹配的部分将被消耗; 重叠匹配(在这种情况下为`aba`)将被排除在结果中. (2认同)