文字:“aaaa”
模式:“aa”
然后两个匹配:aa(0,1),aa(2,3)
如果我想要三个匹配:aa(0,1),aa(1,2),aa(2,3)。 (我相信这是一个经典问题,我不知道如何描述这个:'()
我怎么能在java或python或其他人中做到这一点?
答案 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']