Matcher的matches()方法返回false,find()和groupCount()返回结果

时间:2014-01-24 18:16:51

标签: java regex

我有以下代码:

private static final String ET_AL = "(\\p{Punct}|\\b|^|\\s)et\\.? al\\.?(\\b|$|\\s)";
private static final Pattern ET_AL_PATTERN = Pattern.compile(ET_AL, Pattern.CASE_INSENSITIVE);

...

Matcher m = ET_AL_PATTERN.matcher("Doe, J.; Brown, C.; et al");
while(m.find()) {
    System.out.println(m.group());
}
m.reset();
System.out.println(m.matches());

循环打印“et al”但是对m.matches()的调用返回false。此外,m.groupCount()返回2.有关正在发生的事情的任何帮助吗?

1 个答案:

答案 0 :(得分:4)

  

但是对m.matches()的调用返回false。

这是因为Matcher#matches()要求您将完整输入与正则表达式匹配。

来自Javadoc:

  

公共布尔匹配()

     

尝试将整个区域与模式匹配。如果匹配   成功然后可以通过开始,结束和获得更多信息   小组方法。