如何使用findall和finditer函数进行匹配?两者有什么区别?
0 660
0
该提问暂无详细描述
收藏
2021-02-02 16:19 更新 空心人 •  3328
共 1 个回答
高赞 时间
0

findall函数

findall函数用于查询字符串中某个正则表达式模式全部的非重复出现情况,这一点与search函数在执行字符串搜索时类似,但与match函数和search函数不同之处在于,findall函数总是返回一个包含搜索结果的列表。 如果findall函数没有找到匹配的部分,就会返回一个空列表,如果匹配成功,列表将包含所有成功的匹配部分(从左向右按匹配顺序排列)

finditer函数

finditer函数在功能上与findall类似,只是更加节省内存。

区别

这两个函数的区别是findall函数会将所有匹配的结果一起通过列表返回,而finditer函数会返回一个迭代器,只有对finditer函数返回结果进行迭代,才会对字符串中某个正则表达式模式进行匹配。Findall函数与finditer函数相当于读取XML文档的两种技术:DOM和SAX。前者更灵活,也更加消耗内存资源;后者顺序读取XML文档的内容,不能随机读取XML文档中的内容,但更加节省内存资源。

示例

result = re.findall('bike', 'bike')
#运行结果;['bike']
print(result)
result = re.findall('bike', 'My bike')
#运行结果:['bike']
print (result)
#运行结果:['bike' , 'bike']
result = re.findall('bike','This is a bike.This is a bike')
print(result)

收藏
2021-02-02 16:23 更新 小眼的铁板烧 •  3500