在Regex中匹配两种可能的解决方案

时间:2015-07-29 23:48:21

标签: python regex

我有一个字符串aaab。我希望Python表达式与aa匹配,因此我希望正则表达式返回aaaa,因为有两种方法可以找到aa的子字符串。

但是,这不是发生的事情。

这就是我所做的

a = "aaab"
b = re.match('aa', a)

2 个答案:

答案 0 :(得分:1)

您可以通过前瞻和内部捕获组来实现它:

(?=(a{2}))

由于前瞻不会移动到字符串中的下一个位置,因此我们可以多次扫描相同的文本,从而实现重叠匹配。

请参阅demo

Python code

import re
p = re.compile(r'(?=(a{2}))')
test_str = "aaab"
print(re.findall(p, test_str))

答案 1 :(得分:0)

概括@stribizhev解决方案以匹配一个或多个字符a(?=(a{1,}))

三个或更多:(?=(a{3,}))等。