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.我应该如何解决它,提前谢谢.
只需使用前瞻捕捉重叠的角色,
(?=(c+d))
Run Code Online (Sandbox Code Playgroud)
最后打印组索引1.
你的代码是,
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)