Python 的 re.findall() 和 re.finditer() 方法有什么区别?


re.findall() 方法

re.findall() 用于获取所有匹配模式的列表。它从给定字符串的开头或结尾进行搜索。如果使用 findall 方法搜索给定字符串中的模式,它将返回模式的所有出现。在搜索模式时,建议始终使用 re.findall(),它的功能类似于 re.search() 和 re.match()。

示例

import re result = re.search(r'TP', 'TP Tutorials Point TP')

print result.group()

输出

TP

re.finditer() 方法

re.finditer(pattern, string, flags=0)

返回一个迭代器,该迭代器为字符串中 RE 模式的所有不重叠匹配生成 MatchObject 实例。字符串从左到右扫描,并按找到的顺序返回匹配项。结果中包含空匹配。

以下代码展示了在 Python 正则表达式中使用 re.finditer() 方法。

示例

import re s1 = 'Blue Berries'
pattern = 'Blue Berries'
for match in re.finditer(pattern, s1):
    s = match.start()
    e = match.end()
    print 'String match "%s" at %d:%d' % (s1[s:e], s, e)

输出

Strings match "Blue Berries" at 0:12

更新于:2020年2月20日

911 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告