让我解释一下您在做什么:
regex = re.compile("(aa|bb)+")
您正在创建一个正则表达式,它将查找aa
或bb
,然后尝试查找是否还有更多aa
或bb
之后的内容,并且它将一直寻找aa
或bb
直到找不到为止。因为您希望捕获组仅返回,aa
否则bb
您只会得到最后一个捕获/找到的组。
但是,如果你有一个这样的字符串:aaxaabbxaa
你会得到aa,bb,aa
,因为你在字符串先来看看,找到aa
,然后你看多了,发现只有一个x
,让你拥有1组。然后找到另一个aa
,然后找到一个bb
,然后一个,然后x
停下,然后有第二个小组bb
。然后你找到另一个aa
。所以你的最终结果是aa,bb,aa
我希望这能解释您的工作。和预期的一样。要获得ANY组,aa
或者bb
您需要删除,+
这是告诉正则表达式在返回匹配项之前先查找多个组。并让正则表达式返回aa
或bb
…的每个匹配项
因此您的正则表达式应为:
regex = re.compile("(aa|bb)")
干杯。