IntelliJ сообщает о «недопустимой шестнадцатеричной escape-последовательности» в моей строке, которая является действительной - PullRequest
0 голосов
/ 21 сентября 2018

Я хотел бы динамически сгенерировать шаблон RegularExpression в Java:

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 голосов
/ 21 сентября 2018

Код, который вы разместили, компилируется и запускается без проблем.Если вы создаете шаблон с использованием той же буквенной строки, IntelliJ не будет жаловаться:

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

Так что да, это похоже на ошибку в IntelliJ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...