3
我有以下代码:匹配器的匹配()方法返回false,找到()和groupCount()的返回结果
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());
循环打印 “等”但是对m.matches()的调用返回false。此外,m.groupCount()返回2.有关正在发生的事情的任何帮助?
啊,我明白我做了什么。或者更准确地说我没有做的事情。谢谢。我将*添加到模式的开头和结尾。 –
是的,应该肯定有帮助。 – anubhava
@ScottShipp只有在你的输入没有行分隔符如'\ n'' \ r'时,才会有助于'。*'。在这种情况下,你还必须使用'Pattern.DOTALL'标志来让点''符合行分隔符。如果它解决了您的问题,也请不要忘记[接受解答](http://meta.stackexchange.com/a/5235/186652)。 – Pshemo