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].
参数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)