python3.6中的re.findall组工作机制

时间:2019-07-20 11:16:10

标签: python-3.x findall

我正在学习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']

1 个答案:

答案 0 :(得分:1)

对于每次匹配,findall()返回所有捕获组[1]。

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

如果要同时返回整个匹配项和匹配项的第二个单词,则需要具有两个捕获组,如下所示:

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

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