【发布时间】:2011-12-06 08:37:50
【问题描述】:
所以我试图通过使用正则表达式来计算字符串中括号(例如右括号)的数量。我在匹配器类上找到了这个方法“groupCount”。所以我认为这可以帮助我。
groupCount 在 JavaDoc 中说“任何小于或等于此方法返回值的非负整数都保证是此匹配器的有效组索引。”所以我想那句话
m.group(m.groupCount());
应该总是有效的。错了……
这是我写的一些测试代码:
public class TestJavaBracketPattern {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\))").matcher(")");
System.out.println(m.group(m.groupCount()));
}
}
现在我期望匹配一个右括号(在正则表达式中称为 \)并获得一个匹配项。正则表达式是 (\)) - 这应该匹配包含右括号符号的组。但它只是抛出一些异常(java.lang.IllegalStateException:未找到匹配项)。
接下来,我尝试在没有匹配的地方进行匹配:
public class TestJavaBracketPattern {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\))").matcher("(");
System.out.println(m.group(m.groupCount()));
}
}
我得到了同样的例外。事实上,在这两种情况下,我发现 groupCount 方法都返回 1。
很困惑。
【问题讨论】: