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

regex string and substring

我有一个字符串'aabaacaba'。从左边开始,我试图获取所有大小 >=2 的子字符串,它们出现在字符串的后面。例如,aa 再次出现在字符串中,ab 也是如此。

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

re.findall(r'([a-z]{2,})(?:[a-z]*)(?:)', 'aabaacaba')

我得到 ['aa'] 作为答案。正则表达式缺少 ab 模式。我认为这是因为字符重叠。请提出一个解决方案,以便可以修复表达式。谢谢你。

您可以使用不消耗匹配字符串的 look-ahead assertion

>>> re.findall(r'(?=([a-z]{2,})(?=.*))', 'aabaacaba')
['aa', 'aba', 'ba']

注意:aba 匹配而不是 ab。 (尽量匹配)