刷Python核心编程第三版的习题时遇到一个findall的坑

时间:2023-03-08 19:44:33

在用正则表达式做以下查找时,发现re.findall()对于正则表达式有没有圆括号是有区分的,具体如下

line = 'Tue Sep 18 12:48:21 2029::ilziuv@zcntzirw.net::1884401301-6-8'

patt = '(\d{4}):'

print(re.findall(patt,line))

这样的话,输出的结果是:['2029']

如果patt = '\d{4}:'

那么输出结果就是['2029:']了

懵懵懂懂的找资料,研究大半天之后,发现这样一个结论:就是findall()这个函数返回的结果是正则表达式中的元组,如果没有括号,则返回正则表达式所匹配的内容;如果有一个或多个元组(圆括号),则返回所有匹配的内容(元组)