IntelliJ 在我的字符串上报告"非法十六进制转义序列"是有效的



我想在Java中动态生成一个RegularExpression模式:

String s = "uD83EuDD81";
int codePoint = Character.toCodePoint(s.charAt(0), s.charAt(1));
String pattern = "\x{" + String.valueOf(Integer.toHexString(codePoint)).toUpperCase() + "}";
Matcher matcher = Pattern.compile(pattern).matcher(s);
System.out.println(matcher.matches());

此代码可正确编译和运行。但是,IntelliJ IDEA给出了以下错误'illegal hexadecimal escape sequence"\x{"

我正在使用Java 8和IntelliJ IDEA 2018.1

这是一个错误吗?问题似乎出在 IntellJ 对传递给Pattern.compile方法的参数所做的分析中。

您发布的代码编译和运行没有问题。如果使用相同的文本字符串创建模式,IntelliJ 不会抱怨:

String s = "uD83EuDD81";
String pattern = "\x{1F981}";
Matcher matcher = Pattern.compile(pattern).matcher(s);
System.out.println(matcher.matches());

所以是的,这看起来像是IntelliJ中的一个错误。

最新更新