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
,因此匹配器会找到匹配项。
如果您要尝试计算s
in中出现的次数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