Java RegEx Matcher.groupCount返回0

我知道有人问过这个问题,但我无法解决

对于带有正文(西班牙语)的书本对象:("quiero mas dinero"实际上更长一些)

Matcher一直为以下原因返回0:

    String s="mas"; // this is for testing, comes from a List<String>

int hit=0;

Pattern p=Pattern.compile(s,Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(mybooks.get(i).getBody());

m.find();

System.out.println(s+" "+m.groupCount()+" " +mybooks.get(i).getBody());

hit+=m.groupCount();

我一直"mas 0 quiero mas dinero"在控制台上。为什么哦为什么?

回答:

从Matcher.groupCount()的javadoc中:

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

零组按照惯例表示整个模式。它不包括在此计数中。

如果您检查返回值,m.find()则返回true,然后m.group()返回mas,因此匹配器会找到匹配项。

如果您要尝试计算sin中出现的次数mybooks.get(i).getBody(),则可以这样进行:

String s="mas"; // this is for testing, comes from a List<String>

int hit=0;

Pattern p=Pattern.compile(s,Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(mybooks.get(i).getBody());

while (m.find()) {

hit++;

}

以上是 Java RegEx Matcher.groupCount返回0 的全部内容, 来源链接: utcz.com/qa/399765.html

回到顶部