3

情况是,我想在字符串“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())
}

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

4

1 回答 1

5

只需使用前瞻来捕获重叠的字符,

(?=(c+d))

最后打印组索引 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));
}

输出:

cccd
ccd
cd
于 2014-08-25T07:01:00.223 回答