在 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中文网其他相关文章!