findall 与 finditer
40.5 findall 与 finditer
re.findall(模式, 文本) — 返回所有匹配字符串的列表。
re.finditer — 返回 Match 迭代器,数据量大时更省内存。
有分组时 findall 返回元组列表。
找出所有数字和邮箱
# ========================================
# 示例:findall 与 finditer
# 说明:findall 一次拿全部;finditer 逐条处理
# ========================================
import re
text = '联系 a@x.com 或 b@y.com,电话 10086 和 95588'
# findall:所有邮箱
emails = re.findall(r'[\w.-]+@[\w.-]+', text)
print('邮箱列表', emails)
# finditer:逐个 Match 对象
for m in re.finditer(r'\d+', text):
print('数字', m.group(), '位置', m.start(), '-', m.end())