首页 >后端开发 >Python教程 >如何在 Python 中查找子字符串的所有出现位置?

如何在 Python 中查找子字符串的所有出现位置?

Patricia Arquette
Patricia Arquette原创
2024-12-12 21:58:10929浏览

How Can I Find All Occurrences of a Substring in Python?

在 Python 中查找子字符串的所有出现

在 Python 中,您可以使用 string.find() 和 string.rfind()检索较大字符串中子字符串索引的方法。但是,没有专门设计用于返回子字符串的所有出现位置的内置函数。

使用正则表达式

查找多个子字符串的更强大方法events 是使用正则表达式:

import re

# Sample string
string = "test test test test"

# Find all occurrences of "test"
matches = [m.start() for m in re.finditer('test', string)]
print(matches)  # Output: [0, 5, 10, 15]

re.finditer 生成一个生成器,生成单个匹配对象。每个匹配对象都提供匹配子字符串的起始索引。

考虑重叠匹配

默认情况下,re.finditer 会查找非重叠匹配。要查找重叠匹配,请使用正向前瞻:

matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')]
print(matches)  # Output: [0, 1]

表达式 (?=tt) 断言子字符串“tt”出现在当前位置,但不消耗它。

反向查找所有而不重叠

要执行反向查找所有而不重叠匹配,请合并正向和负向前瞻:

search = 'tt'
matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')]
print(matches)  # Output: [1]

此表达式确保“tt”立即出现在光标之后,但不在反向的某个回溯范围(len(search)-1)内。

以上是如何在 Python 中查找子字符串的所有出现位置?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn