我有以下代码:
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.有关正在发生的事情的任何帮助吗?
答案 0 :(得分:4)
但是对m.matches()的调用返回false。
这是因为Matcher#matches()
要求您将完整输入与正则表达式匹配。
来自Javadoc:
公共布尔匹配()
尝试将整个区域与模式匹配。如果匹配 成功然后可以通过开始,结束和获得更多信息 小组方法。