【问题标题】:In java, when using regex to find patterns, how to get nested result?在java中,使用正则表达式查找模式时,如何获得嵌套结果?
【发布时间】:2014-10-18 06:48:57
【问题描述】:

情况是这样的,我想在字符串“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。我应该如何解决它,提前谢谢。

【问题讨论】:

标签: java regex matcher overlapping-matches


【解决方案1】:

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

(?=(c+d))

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

输出:

cccd
ccd
cd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多