【发布时间】:2022-01-16 05:44:16
【问题描述】:
似乎正则表达式转义在不同版本的 Java 中的工作方式不同。
-
在 Java openjdk 16.0.1 中编译工作正常
-
在 Java openjdk 11.0.11 中抛出此编译错误:
test.java:15: error: illegal escape character
if (variable.matches("\s*")){
我知道,我通常对\\ 比较放心。我的问题:
自从哪个版本改变了这种行为?为什么会这样?
【问题讨论】:
-
\s,带有 one 反斜杠,没有正则表达式的含义。它要么是控制字符,要么只是字母s。 -
查看version 13和version 14中
String::translateEscapes的文档可以看出"\s"是在版本14中引入的,并且编码了一个空格字符。 -
请注意,这不是正则表达式转义。它是字符串文字转义。
标签: java regex escaping version