Unicode可能有50个空格
\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000] [\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000
和6个换行符
不仅是CRLF,LF,CR,而且还有NEL(U + 0085),PS(U + 2029)和LS(U + 2028)。
也许我能理解大多数空格和PS(“段落分隔符”),但是“下一行”和“行分隔符”有什么用处?
一切似乎都是由一个非常大的委员会发明的,每个人都希望拥有自己的空间,而领导者每人只能获得一个换行符。但是说真的,当您的编程语言不支持它(或者像Java这样是错误的)时,您将如何处理呢?
1
Java如何“错误地”执行它?
—
Billy ONeal,
@maaartinus :(我不敢相信我在捍卫Java的所有功能)Java的字符类已被记录为适用于一组特定的字符。Unicode提供了更多看起来像适合这些字符类的字符,但是Unicode没有定义正则表达式语言。仅字符编码。Java按照其规范完全正确地工作-就是要匹配典型的空白。如果您希望它与Unicode标准中可能被视为空白的所有内容匹配,则必须自己编写。
—
比利·奥尼尔
谢谢。但是,但是他们可以自由创建一个
—
maaartinus 2011年
Pattern.compile2010
返回根据去年定义工作的正则表达式的方法。他们还可以自由创建一个方法Pattern.compileLatestUTS
,该方法将明确声明其含义将根据新规范而改变。
看起来Java最终确实使用了加入标志来防止向后兼容性问题,从而对其正则表达式实现进行了修正/现代化:stackoverflow.com/a/4307261/1172352
—
peterflynn '16