我发现findall(r'(ab)+', "ababababab")
只能匹配[“ab”]
>>> re.findall(r'(ab)+', "ababababab")
['ab']
我只知道使用r'(?:ab)+'
可以匹配所有字符
为什么会这样?在
对不起,我的问题可能说不清楚
(?:ab)取“ab”作为一个整体,设c=ab,所以c+=ababab。。。。在
所以这很明显
>>> re.findall(r'(?:ab)+', "ababababab") <br>
['ababababab']
我的问题是为什么会发生这种情况:
>>> match=re.search(r'(ab)+', "ababababab") <br>
>>> match.group()<br>
'ababababab'
我想你要问的问题是它为什么会返回这个:
答案是,如果模式中有一个或多个组,那么findall将返回一个包含所有匹配组的列表。但是,您的正则表达式中有一个组在正则表达式中匹配多次,因此它取匹配的最后一个值。在
我想你想要的要么是:
^{pr2}$或者你发布的版本:
如果模式包含一个组,findall将返回该组而不是整个匹配项。这里(ab)+匹配整个字符串,但只返回组(ab)。在
相关问题 更多 >
编程相关推荐