从逻辑上讲,它是这样的(但每当涉及字符编码或区域设置时,逻辑就不相干了)。
perl -e 'print "\n" =~ /\v/ ? "y\n" : "n\n";'
打印出 "y",确实如此。根据
Pattern.compile("\\v").matcher("\n").matches();
在Java中返回false
并不是错的。如果没有这篇文章的话,我就不会有任何困惑了。
JDK7中更新的Pattern类拥有一个神奇的新标志:UNICODE_CHARACTER_CLASS,它可以让一切正常工作。
但是我正在使用Java版本"1.7.0_07",该标志存在但似乎完全没有改变任何东西。此外,"\n"不是Unicode的新人,而是一个普通的ASCII字符,所以我真的不知道这个差异可能发生在哪里。也许我做了一些愚蠢的事情,但我看不出来。
\v
表示垂直空白符。 - Haozhun