📅  最后修改于: 2023-12-03 15:27:24.910000             🧑  作者: Mango
当你需要在Python中搜索一个匹配的字符串,有时你可能想要检索多次出现的所有匹配。在这种情况下,你可以使用Python的 re
模块来创建正则表达式并执行匹配操作。
不过,默认情况下正则表达式只返回第一个匹配项的索引位置。如果你需要找到所有匹配项的位置,可以使用 re.finditer()
方法,它会返回一个可以迭代的匹配对象,每个对象都包含有关该匹配项的详细信息。下面是一个使用 re.finditer()
的示例:
import re
text = "The quick brown fox jumps over the lazy dog."
pattern = re.compile(r"\b\w{4}\b")
matches = pattern.finditer(text)
for match in matches:
print(match.span())
代码输出如下:
>>> (4, 8)
>>> (10, 14)
>>> (16, 20)
>>> (25, 29)
>>> (31, 35)
>>> (40, 44)
>>> (46, 50)
在上面的代码中,我们使用 re.compile()
方法创建一个正则表达式模式,并使用该模式搜索文本中所有长度为4的单词。然后,我们使用 re.finditer()
方法执行匹配操作,并遍历每个返回的匹配对象以获取每个匹配项的位置信息。
每个匹配对象都有一个 span()
方法,返回一个元素包含匹配项的开始和结束索引。在上面的示例中,我们使用 print()
函数输出每个匹配项的索引位置,结果显示每个匹配项的起始和结束位置。
这就是如何使用Python的 re.finditer()
方法来获取每个匹配项的位置。如果你想进一步处理这个结果,可以将每个匹配项的索引位置存储在一个列表中,以备后续使用。