Python re.finditer
简介
在 Python 的 re 模块中,re.finditer() 函数用于通过正则表达式在字符串中查找匹配的内容。与 re.findall() 函数不同,re.finditer() 返回的不是匹配的字符串列表,而是一个迭代器(iterator),可以通过遍历来获取每一个匹配结果。
语法
re.finditer(pattern, string, flags=0)
- pattern: 匹配的正则表达式
- string: 需要匹配的字符串
- flags: 可选参数,用于修改正则表达式的匹配方式
示例
下面是一个简单的示例,演示了如何使用 re.finditer() 函数查找匹配的内容。
运行上述代码,输出如下结果:
从输出可以看出,re.finditer() 函数返回了两个匹配结果,即两个 “hello” 出现的位置。每个匹配结果都是一个 re.Match 对象,可以通过 match.group() 方法获取匹配的内容,通过 match.start() 和 match.end() 方法获取匹配的起始位置和结束位置,通过 match.span() 方法获取匹配的位置范围。
匹配模式
re.finditer() 函数的第三个参数 flags 可以用来修改正则表达式的匹配模式。下面是一些常用的匹配模式:
- re.I (re.IGNORECASE): 忽略大小写匹配
- re.M (re.MULTILINE): 多行匹配
- re.S (re.DOTALL): 匹配所有字符,包括换行符
- re.X (re.VERBOSE): 忽略空白字符,支持注释
下面是一个示例,演示了如何使用 re.finditer() 函数的 flags 参数来修改正则表达式的匹配模式。
运行上述代码,输出如下结果:
从输出可以看出,不使用 flags 参数时,”.” 只会匹配到第一行的 “Hello”。然而,当使用 flags=re.S 参数时,”.” 会匹配到所有的字符,包括换行符,所以可以匹配到整个字符串 “Hello\nWorld”。
总结
Python 的 re.finditer() 函数是一个非常有用的工具,通过正则表达式在给定的字符串中查找匹配的内容。它返回了一个迭代器,可以通过遍历来获取每一个匹配结果。另外,通过 flags 参数可以修改正则表达式的匹配模式,以适应不同的匹配需求。