IntelliJ在我的字符串上报告“非法十六进制转义序列”

时间:2018-09-20 21:02:48

标签: java regex intellij-idea

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

String s = "\uD83E\uDD81";
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方法的参数所做的分析中。

1 个答案:

答案 0 :(得分:1)

您发布的代码可以编译并正常运行。如果您使用相同的文字字符串创建模式,则IntelliJ不会抱怨:

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

是的,这看起来像IntelliJ中的错误。