Python re.finditer() 方法



Python re.finditer() 方法返回一个迭代器,为字符串中模式的所有非重叠匹配生成匹配对象。

方法 re.findall() 返回匹配字符串的列表,而方法 re.finditer() 提供有关每个匹配项的更多详细信息,例如字符串中的开始和结束位置。每个 match 对象都可用于提取匹配的子字符串及其位置。

当我们需要详细处理或分析每个匹配项时,此方法特别有用。

语法

以下是 Python re.finditer() 方法的语法和参数 -


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

参数

以下是 python re.finditer() 方法的参数 -

  • pattern:要搜索的正则表达式模式。
  • string:要在其中搜索的字符串。
  • maxsplit(可选):最大拆分数。默认值为 0,表示 “无限制”。
  • flags(可选):用于修改匹配行为的标志(例如,re.IGNORECASE

返回值

此方法返回 match 对象的迭代器

示例 1

以下是 re.finditer() 方法的基本示例。此示例查找字符串中的所有数字序列并打印每个匹配项 -


import re

matches = re.finditer(r'\d+', 'There are 123 apples and 456 oranges.')
for match in matches:
	 	 print(match.group()) 	

输出

123
456

示例 2

此示例查找字符串中的所有单词,并在方法 re.finditer() 的帮助下打印每个单词 -


import re

matches = re.finditer(r'\b\w+\b', 'Hello, world! Welcome to Python.')
for match in matches:
	 	 print(match.group()) 	

输出

Hello
world
Welcome
to
Python

示例 3

在此示例中,我们使用 re.IGNORECASE 标志执行不区分大小写的搜索并打印每个匹配项 -


import re

matches = re.finditer(r'hello', 'Hello HELLO hello', re.IGNORECASE)
for match in matches:
	 	 print(match.group()) 	 	

输出

Hello
HELLO
hello

示例 4

在此示例中,我们检索字符串中每个匹配项的开始和结束位置 -


import re

matches = re.finditer(r'\d+', 'There are 123 apples and 456 oranges.')
for match in matches:
	 	 print(match.group(), match.start(), match.end()) 	

输出

123 10 13
456 25 28