查找子字符串的所有出现
Python 提供了广泛的字符串操作功能,包括函数 string.find() 和 string.rfind( )分别从开头和结尾检索子字符串的第一次出现。然而,当我们试图找到子字符串的所有出现位置时,这些函数就显得不够了。
解决方案:利用正则表达式
在没有内置“字符串”的情况下.find_all()”函数,我们可以利用正则表达式的力量:
import re text = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', text)] # Print the found indexes print(matches) # [0, 5, 10, 15]
这个解决方案迭代re.finditer('test', text) 的结果,一个生成器,为每个发现的事件生成匹配对象。通过从每个匹配中提取 start() 属性,我们获得表示子字符串在原始字符串中的位置的索引列表。
处理重叠匹配
如果允许重叠匹配,可以通过在常规中使用前瞻断言来捕获它们表达式:
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] # [0, 1]
执行反向搜索
要执行反向查找所有而不重叠,可以使用正向和负向前瞻的组合:
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] # [1]
通过使用正则表达式,我们可以有效地识别和检索Python中所有出现的子字符串字符串。
以上是如何查找 Python 字符串中所有出现的子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!