gpt4 book ai didi

python - 查找所有出现的子字符串(包括重叠)?

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:40 25 4
gpt4 key购买 nike

好的,所以我找到了这个:How to find all occurrences of a substring?

也就是说,要获取列表中子字符串的索引重叠次数,您可以使用:

[m.start() for m in re.finditer('(?=SUBSTRING)', 'STRING')]

这行得通,但我的问题是要查找的字符串和子字符串都是由变量定义的。我对正则表达式知之甚少,不知道如何处理它——我可以让它与非重叠子字符串一起工作,这只是:

[m.start() for m in re.finditer(p3, p1)]

编辑:

因为有人问,我会继续说明。 p1 和 p3 可以是任何字符串,但如果它们是,例如 p3 = "tryt"p1 = "trytryt",则结果应该是 [0 , 3]

最佳答案

re.finditer 的参数是简单的字符串。如果您在变量中有子字符串,只需将其格式化为正则表达式即可。像 '(?={0})'.format(p3) 这样的东西是一个开始。自 various symbols do have special meaning在 RE 中你会想要逃避它们。幸运的是 re module包括 re.escape正是为了这样的需要。

[m.start() for m in re.finditer('(?={0})'.format(re.escape(p3)), p1)]

关于python - 查找所有出现的子字符串(包括重叠)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com