正则表达式的多重匹配?

时间:2012-03-24 08:19:11

标签: java python regex

文字:“aaaa”

模式:“aa”

然后两个匹配:aa(0,1),aa(2,3)

如果我想要三个匹配:aa(0,1),aa(1,2),aa(2,3)。 (我相信这是一个经典问题,我不知道如何描述这个:'()

我怎么能在java或python或其他人中做到这一点?

2 个答案:

答案 0 :(得分:1)

请在此处查看此代码:

String str = "aaaa";
Pattern p1= Pattern.compile("(aa)");
Matcher matcher = p.matcher(str);
int start = -1;
while(matcher.find(start + 1)) {
    start = matcher.start(0);
    System.out.println("Found: " + start);
}

输出:

Found: 0
Found: 1
Found: 2

这基本上是你如何操纵java搜索下一场比赛的地方。希望这对你有帮助。

答案 1 :(得分:1)

在Python中,您可以使用re.finditer和前瞻断言:

s = 'aaaa'
import re
matches = re.finditer(r'(?=(a{2}))', s)
results = [match.group(1) for match in matches]
# -> ['aa', 'aa', 'aa']