我想在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
方法的参数所做的分析中。
答案 0 :(得分:1)
您发布的代码可以编译并正常运行。如果您使用相同的文字字符串创建模式,则IntelliJ不会抱怨:
String s = "\uD83E\uDD81";
String pattern = "\\x{1F981}";
Matcher matcher = Pattern.compile(pattern).matcher(s);
System.out.println(matcher.matches());
是的,这看起来像IntelliJ中的错误。