re.findall 分组工作机制 python3.6

re.findall groups working mechanism in python3.6

我正在学习python re 模块。想知道re.findall()函数的工作机制是什么。

我看过python的官方文档,还是不明白re.findall群的工作机制是什么。 python3.6 findall() document..

我对下面的代码感到困惑:

import re
#output: ['def']
print(re.findall('\w+\s+(\w+)','abc def'))

我希望 re.findall('\w+\s+(\w+)','abc def') 的输出是 [('abc def','def')],但实际输出是 ['def']

对于每场比赛,findall() return 都是捕获组 [1]。

您的正则表达式匹配一个子字符串 abc def。正则表达式只有一个捕获组,所以这就是 returned.

如果你想return整个匹配和匹配的第二个单词,你需要有两个捕获组,像这样:

>>> print(re.findall('(\w+\s+(\w+))','abc def'))
[('abc def', 'def')]

[1] 如果没有捕获组,则整个匹配 returned。