可以搜索(r'(ab)+',“ababababab”)匹配python中的所有字符吗

2024-10-01 22:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现findall(r'(ab)+', "ababababab")只能匹配[“ab”]

>>> re.findall(r'(ab)+', "ababababab")
['ab']

我只知道使用r'(?:ab)+'可以匹配所有字符

^{pr2}$

为什么会这样?在


对不起,我的问题可能说不清楚

(?:ab)取“ab”作为一个整体,设c=ab,所以c+=ababab。。。。在

所以这很明显

>>> re.findall(r'(?:ab)+', "ababababab") <br>
['ababababab'] 

我的问题是为什么会发生这种情况:

>>> match=re.search(r'(ab)+', "ababababab") <br>
>>> match.group()<br>
'ababababab'

Tags: brresearchabmatchgroup情况字符
2条回答

我想你要问的问题是它为什么会返回这个:

>>> re.findall(r'(ab)+', "ababababab")
['ab']

答案是,如果模式中有一个或多个组,那么findall将返回一个包含所有匹配组的列表。但是,您的正则表达式中有一个组在正则表达式中匹配多次,因此它取匹配的最后一个值。在

我想你想要的要么是:

^{pr2}$

或者你发布的版本:

>>> re.findall(r'(?:ab)+', "ababababab")
['ababababab']

如果模式包含一个组,findall将返回该组而不是整个匹配项。这里(ab)+匹配整个字符串,但只返回组(ab)。在

相关问题 更多 >

    热门问题