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

Kev*_*vin 3 python regex string substring

好的,所以我发现了这一点:在Python中查找所有出现的子字符串

其中说,为了使索引重叠列表中的子串的出现,您可以使用:

[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].

D.S*_*ley 7

参数re.finditer是简单的字符串.如果变量中有子字符串,只需将其格式化为正则表达式即可.有点像是'(?={0})'.format(p3)一个开始.由于各种符号在RE中具有特殊含义,因此您需要将它们转义.幸运的是,该re模块re.escape仅包含这种需求.

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