gpt4 book ai didi

java - "\n"是垂直空格吗,即 "\v"应该匹配它吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:28 26 4
gpt4 key购买 nike

从逻辑上讲,它是(但只要字符编码或语言环境在起作用,逻辑就无关紧要)。根据

perl -e 'print "\n" =~ /\v/ ? "y\n" : "n\n";'

打印“y”,它是。根据

Pattern.compile("\\v").matcher("\n").matches();

在 java 中返回 false,它不是。如果没有this posting,这根本不会让我感到困惑。声称

Sun’s updated Pattern class for JDK7 has a marvelous new flag, UNICODE_CHARACTER_CLASS, which makes everything work right again.

但我使用的是 Java 版本“1.7.0_07”,并且该标志存在并且似乎根本没有改变。此外,“\n”不是 Unicode 的新成员,而是一个普通的旧 ASCII 字符,所以我真的不明白这种差异是如何发生的。可能我在做一些愚蠢的事情,但我看不到。

最佳答案

Java 7's Javadoc for java.util.regex.Pattern在其“此类不支持的 Perl 构造列表”中明确提及 \v。所以并不是说 \n 不属于 Java 的“垂直空白”范畴; Java 7 没有一类“垂直空白”。相反,Java 7 正则表达式有一个未记录的功能,它们将 \v 解释为引用垂直制表符 U+000B . (这是来自 C/C++/Bash/etc. 的传统转义序列,尽管 Java 字符串文字支持它。类似地,\a 用于警报/响铃和\cX 用于控制字符 X。)

编辑添加:这在较新版本的 Java 中已更改。根据Java 8's Javadoc for java.util.regex.Pattern , \v 现在表示“垂直空白字符:[\n\x0B\f\r\x85\u2028\u2029]”。

关于java - "\n"是垂直空格吗,即 "\v"应该匹配它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com