所以我尝试使用正则表达式来计算字符串中括号(例如右括号)的数量。我在匹配器类上找到了这个方法“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。
很困惑。
最佳答案
下面的内容是不是太务实了?
@Test
void testCountBrackets() {
String s = "Hello) how)are)you(";
System.out.println( s.length() - s.replaceAll("\\)", "").length() ); // 3
}
(当然,这假设您想要搜索真正的 RE,而不仅仅是括号。否则只需使用 s.replace(")","")
)
关于java - 如何计算 Java 正则表达式中字符串中括号的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397138/