我正在学习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']
。
答案 0 :(得分:1)
对于每次匹配,findall()
返回所有捕获组[1]。
您的正则表达式匹配一个子字符串abc def
。正则表达式只有一个捕获组,所以这就是返回的内容。
如果要同时返回整个匹配项和匹配项的第二个单词,则需要具有两个捕获组,如下所示:
>>> print(re.findall('(\w+\s+(\w+))','abc def'))
[('abc def', 'def')]
[1]如果没有捕获组,则返回整个匹配项。