我正在学习python re模块,并想知道re.findall()
函数的工作机制是什么。
我已经看过python的官方文档,我仍然不明白re.findall
组的工作机制是什么。 python3.6 findall(( 文档..
我对下面的代码感到困惑:
import re
#output: ['def']
print(re.findall('w+s+(w+)','abc def'))
我希望re.findall('w+s+(w+)','abc def')
的输出是[('abc def','def')]
的,但实际输出是['def']
。
对于每个匹配项,findall()
返回所有捕获组 [1]。
您的正则表达式匹配一个子字符串,abc def
. 正则表达式只有一个捕获组,因此这就是返回的内容。
如果要同时返回整个匹配项和匹配项的第二个单词,则需要有两个捕获组,如下所示:
>>> print(re.findall('(w+s+(w+))','abc def'))
[('abc def', 'def')]
[1] 如果没有捕获组,则返回整个匹配项。