在java中,当使用正则表达式查找模式时,如何获得嵌套结果?

May*_*e23 3 java regex matcher overlapping-matches

情况是,我想在字符串"cccd"中找到满足"c + d"的字符串.我的代码如下,

String str="cccd";
String regex="c+d";
Pattern pattern = Pattern.compile(regex);
Matcher matcher =pattern.matcher(str);
While(matcher.find()){
    System.out.println(matcher.group())
}
Run Code Online (Sandbox Code Playgroud)

结果只是"cccd".但我想要的是获得所有可能的结果,包括嵌套的结果,即cd,ccd和cccd.我应该如何解决它,提前谢谢.

Avi*_*Raj 5

只需使用前瞻捕捉重叠的角色,

(?=(c+d))
Run Code Online (Sandbox Code Playgroud)

最后打印组索引1.

DEMO

你的代码是,

String str="cccd";
String regex="(?=(c+d))";
Pattern pattern = Pattern.compile(regex);
Matcher matcher =pattern.matcher(str);
while(matcher.find()){
    System.out.println(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)

输出:

cccd
ccd
cd
Run Code Online (Sandbox Code Playgroud)