Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:重叠正则表达式搜索_Python_Regex - Fatal编程技术网

Python:重叠正则表达式搜索

Python:重叠正则表达式搜索,python,regex,Python,Regex,因此,如果我用python(3.7)创建一个如下所示的程序: import re regx = re.compile("test") print(regx.findall("testest")) 然后运行它,我将得到: ["test"] 尽管有两个“test”的例子,但它只向我展示了一个,我认为这是因为第一个“test”的字母在第二个“test”中被使用。我如何制作一个程序,让我得到一个结果?你需要使用一个具有前瞻性的捕获组(?=(这里的regex_)): 正则表达式是贪婪的。它们消耗尽可能

因此,如果我用python(3.7)创建一个如下所示的程序:

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')])