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