re 模块简介
re 模块是 Python 标准库中的正则表达式模块。正则表达式是一种特殊的字符串处理方式,常用于匹配文本中的特定模式。re 模块可以提供针对正则表达式的支持。
re.finditer() 函数
re.finditer(pattern, string, flags=0)
函数功能:
扫描整个字符串,并返回对每个匹配项的迭代器。每个匹配项都由一个 MatchObject 实例表示。
参数:
- pattern: 一个正则表达式
- string: 要进行匹配的字符串。
-
flags:可选参数, 通过它可以修改正则表达式的匹配方式, 这是一个 int 类型的变量, 取以下值中的单个或者多个:
- re.I(忽略大小写)
- re.M(多行模式)
- re.S(点任意匹配模式,改变.的行为)
返回值:
返回一个迭代器,迭代器中的每个元素都是匹配的 MatchObject 实例。
使用方法
在使用 re.finditer() 函数时,需要先通过 re.compile() 函数创建一个模式对象,再使用模式对象调用 finditer() 方法。
匹配一个字符串中的所有整数,并输出它们所在的位置
import re
pattern = re.compile(r'\d+')
string = 'Hello 123 Python 456'
for match in re.finditer(pattern, string):
print(match.group(), match.start(), match.end())
输出结果:
123 6 9
456 16 19
在此例中,首先利用 re.compile() 函数创建了一个正则表达式对象 pattern,该表达式用来匹配数字。
然后调用 finditer() 函数对字符串进行查找匹配,循环遍历迭代器并输出其匹配结果。
匹配一个字符串中的所有子串,并输出它们所在的位置
import re
pattern = re.compile(r'Python')
string = 'Hello Python, Python is a wonderful language!'
for match in pattern.finditer(string):
s = match.start()
e = match.end()
print(match.group(), s, e)
输出结果:
Python 6 12
Python 14 20
在此例中,同样先使用 re.compile() 函数创建一个正则表达式对象 pattern,匹配字符串 Python。
然后调用 finditer() 函数查找字符串,循环遍历迭代器并输出其匹配结果。
总结
re.finditer() 函数可以快速匹配字符串中的所有符合要求的子串,并返回它们在原字符串中的位置。学会了该函数的使用方法对于进行复杂的文本处理任务至关重要。