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