Java 正则表达式';什么是多重匹配?

Java 正则表达式';什么是多重匹配?,java,python,regex,Java,Python,Regex,正文:“aaaa” 图案:“aa” 然后将有两个匹配:aa(0,1),aa(2,3) 如果我想要三个匹配:aa(0,1),aa(1,2),aa(2,3)。(我认为这是一个经典问题,我不知道如何描述它:'() 如何在java、python或其他语言中实现这一点?请参见以下代码: String str = "aaaa"; Pattern p1= Pattern.compile("(aa)"); Matcher matcher = p.matcher(str); int start = -1; whi

正文:“aaaa”

图案:“aa”

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

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

如何在java、python或其他语言中实现这一点?

请参见以下代码:

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中从何处搜索下一个匹配项的基本操作方式。希望这会对您有所帮助。

在Python中,您可以使用和前瞻性断言:

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

你应该使用一个模式和一个匹配器来尝试java.util.regex。首先尝试,展示你的尝试。这是一个4行的问题,谷歌可能会有所帮助。你是对的。我很傻。我误解了匹配器类。