java.util.regex.Matcher中的groupCount()始终返回0

Hoo*_*lum 3 java regex

我试图计算字符串中有多少匹配模式.我是新手使用java.util.regex,我打算使用matcher.groupCount()来获取匹配组的数量.因为根据文档,它返回捕获组的数量.

返回此匹配器模式中捕获组的数量.

组0表示按惯例的整个模式.它不包含在此计数中.

小于或等于此方法返回的值的任何非负整数都保证是此匹配器的有效组索引.

这是我的问题的简化示例:

Pattern pattern = Pattern.compile("@");
Matcher matcher = pattern.matcher("@#@#@#@#@");
System.out.println(matcher.groupCount());
Run Code Online (Sandbox Code Playgroud)

它的输出是0.我误解了哪一部分?如何计算匹配模式的数量?

Men*_*ena 6

该方法groupCount返回的组数Pattern.

a Pattern中的组是括号分隔的.

你不Pattern包含任何群组.

如果你正在寻找匹配的数量,使用while环比Matcherfind()方法(返回boolean).

例如:

int myMatches = 0;
while (matcher.find()) {
    myMatches++;
}
Run Code Online (Sandbox Code Playgroud)