我有一个字符串'aabaacaba'
。从左开始,我试图获得所有大小的子串> gt; = 2,它出现在字符串的后面。例如,aa
再次出现在字符串中,ab
也是如此。
我写了以下正则表达式代码:
re.findall(r'([a-z]{2,})(?:[a-z]*)(?:\1)', 'aabaacaba')
我得到[' aa']作为答案。正则表达式错过了ab模式。我认为这是因为人物重叠。请建议一个解决方案,以便修复表达式。谢谢。
答案 0 :(得分:8)
您可以使用不使用匹配字符串的look-ahead assertion:
>>> re.findall(r'(?=([a-z]{2,})(?=.*\1))', 'aabaacaba')
['aa', 'aba', 'ba']
注意:aba
匹配而不是ab
。 (试图尽可能长时间匹配)