摘要:
认识re.findall()与re.search()的区别,re.findall()的使用
认识另外一种匹配方法re.findall()
之前认识的re.search()是返回一个Match对象,是文本中第一次匹配的对象,而findall()的方法却有所不同。findall()方法返回的是一个列表,包含文本匹配中的所有匹配,如果没有找到相关配置项返回的则是空列表。
接下来还是举个例子:
例子:
2022-05-20销售额340000元;2022-06-20销售额430000元。
需要提取所有的日期。
如果使用之前的search()代码如下:
text = " 2022-05-20销售额340000元;2022-06-20销售额430000元。"
pattern = re.compile(r"\d{4}-\d{2}-\d{2}")
res = pattern.search(text)
print(res.group())
输出结果如下:
输出结果:2022-05-20
如果采用findall(),代码如下:
text = " 2022-05-20销售额340000元;2022-06-20销售额430000元。"
pattern = re.compile(r"\d{4}-\d{2}-\d{2}")
res = pattern.findall(text)
print(res)
输出结果如下:
输出结果:['2022-05-20', '2022-06-20']
与search()相比,findall()返回的不是Match 对象而是一个数组,所以不可以用group()直接输出匹配对象。同时,findall()返回了所有匹配的字符串,可以通过访问列表的方式调用匹配结果。在日常应用中findall()使用的比search()更频繁。
如果有介绍错误的请指正,如有补充请在评论中发表您的观点,迷途中的小小书童,请赐教。