Python:重叠正则表达式搜索
因此,如果我用python(3.7)创建一个如下所示的程序:Python:重叠正则表达式搜索,python,regex,Python,Regex,因此,如果我用python(3.7)创建一个如下所示的程序: import re regx = re.compile("test") print(regx.findall("testest")) 然后运行它,我将得到: ["test"] 尽管有两个“test”的例子,但它只向我展示了一个,我认为这是因为第一个“test”的字母在第二个“test”中被使用。我如何制作一个程序,让我得到一个结果?你需要使用一个具有前瞻性的捕获组(?=(这里的regex_)): 正则表达式是贪婪的。它们消耗尽可能
import re
regx = re.compile("test")
print(regx.findall("testest"))
然后运行它,我将得到:
["test"]
尽管有两个“test”的例子,但它只向我展示了一个,我认为这是因为第一个“test”的字母在第二个“test”中被使用。我如何制作一个程序,让我得到一个结果?你需要使用一个具有前瞻性的捕获组
(?=(这里的regex_))
:
正则表达式是贪婪的。它们消耗尽可能多的目标字符串。一旦使用,字符不会再次检查,因此不会发现重叠模式 要做到这一点,您需要使用python正则表达式的一个称为前瞻断言的特性。您将查找字符
t
的实例,其中后跟est
。前瞻不会消耗字符串的部分内容
import re
regx = re.compile('t(?=est)')
print([m.start() for m in regx.finditer('testest')])
[0,3]
本页更多详情:是的,这个问题对我帮助很大,谢谢!
import re
regx = re.compile('t(?=est)')
print([m.start() for m in regx.finditer('testest')])