小编典典

查找所有匹配的子字符串,而不仅仅是“最扩展的”

java

代码

String s = "y z a a a b c c z";
Pattern p = Pattern.compile("(a )+(b )+(c *)c");
Matcher m = p.matcher(s);
while (m.find()) {
    System.out.println(m.group());
}

版画

a a a b c c

哪个是对的。

但是从逻辑上讲,子字符串

a a a b c
a a b c c
a a b c
a b c c
a b c

也匹配正则表达式。

所以,我怎样才能使代码找到那些子也一样,即不仅 多数扩展 之一,也是它的 孩子们


阅读 225

收藏
2020-09-26

共1个答案

小编典典

您可以使用诸如和的勉强限定词。与标准相比,它们尽可能少地匹配并且贪婪地匹配,即尽可能地匹配。尽管如此,这仅允许您找到特定的“子匹配项”,而不是全部。使用提前控制非捕获组可以实现更多控制,文档中也有介绍。但是,为了真正找到所有子匹配项,您可能必须自己做一些事情,例如,构建正则表达式所对应的自动机并使用自定义代码进行导航。*?``+?``*``+

2020-09-26