Python:重叠正则表达式搜索

时间:2018-11-14 23:31:21

标签: python regex

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

import re
regx = re.compile("test")
print(regx.findall("testest"))

运行它,然后我会得到:

["test"]

即使有两个“测试”实例,它也只是向我展示一个我认为是因为第二个“测试”中使用了第一个“测试”的字母。我该如何制作一个可以给我["test", "test"]结果的程序?

2 个答案:

答案 0 :(得分:4)

您将要使用具有(?=(regex_here))提前功能的捕获组:

import re
regx = re.compile("(?=(test))")
print(regx.findall("testest"))

>>> ['test', 'test']

答案 1 :(得分:-1)

正则表达式表达式很贪心。它们消耗尽可能多的目标字符串。一旦消耗掉字符,就不会再次检查它,因此找不到重叠的图案。

为此,您需要使用称为正则断言的python正则表达式功能。您将查找字符t后跟est的实例。向前看不会消耗字符串的一部分。

    import re

    regx = re.compile('t(?=est)')

    print([m.start() for m in regx.finditer('testest')])

[0,3]

此页面上的更多详细信息:https://docs.python.org/3/howto/regex.html