Ошибка компиляции «Недопустимый escape-символ» в регулярном выражении

java
Вопрос:Картинка: Ошибка: C:UsersEamonprogrammingjava>javac shop/Main.java .shopCatalogue.java:41: error: illegal escape character Pattern.compile("^[A-Za-z][d]{4}$"); ^ 1 error C:UsersEamonprogrammingjava>javac shop/Main.java .shopCatalogue.java:41: error: illegal escape character Pattern.compile("^[A-Za-z][p{Digit}]{4}$"); ^ 1 error Код: Pattern.compile("^[A-Za-z][p{Digit}]{4}$"); Ссылка: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum Лучший ответ: вам нужно убежать d и p с дополнительной обратной косой чертой, поскольку они не являются допустимыми escape-последовательностями. "^[A-Za-z][d]{4}$" должно быть "^[A-Za-z][d]{4}$" а также "^[A-Za-z][p{Digit}]{4}$" должно

Вопрос:

Картинка:

Ошибка:

C:UsersEamonprogrammingjava>javac shop/Main.java .shopCatalogue.java:41: error: illegal escape character Pattern.compile(«^[A-Za-z][d]{4}$»); ^ 1 error C:UsersEamonprogrammingjava>javac shop/Main.java .shopCatalogue.java:41: error: illegal escape character Pattern.compile(«^[A-Za-z][p{Digit}]{4}$»); ^ 1 error

Код:

Pattern.compile(«^[A-Za-z][p{Digit}]{4}$»);

Ссылка:

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum

Лучший ответ:

вам нужно убежать d и p с дополнительной обратной косой чертой, поскольку они не являются допустимыми escape-последовательностями.

«^[A-Za-z][d]{4}$»

должно быть

«^[A-Za-z][d]{4}$»

а также

«^[A-Za-z][p{Digit}]{4}$»

должно быть

«^[A-Za-z][p{Digit}]{4}$» Ответ №1

Использовать escape-символ

Pattern.compile(«^[A-Za-z][p{Digit}]{4}$»); Pattern.compile(«^[A-Za-z][d]{4}$»);

См. Пример примера LIVE DEMO

import java.util.regex.*; public class Main { public static void main(String[] args) { Pattern replace = Pattern.compile(«^[A-Za-z][d]{4}$»); Matcher matcher1 = replace.matcher(«A1234»); System.out.println(«Output of A1234 = » + matcher1.replaceAll(«ITS REPLACED»)); Matcher matcher2 = replace.matcher(«F87652»); System.out.println(«Output of F87652 = » + matcher2.replaceAll(«ITS REPLACED»)); } }

ВЫВОД:

Output of A1234 = ITS REPLACED Output of F87652 = F87652 Ответ №2

В игре есть два уровня: вы пишете регулярное выражение внутри литерала строки Java в исходном файле. Прежде всего, часть Java String должна быть правильно экранирована, и здесь, где ошибка illegal escape character возникает из: d недействительна в любом литерале Java String, даже если вы пишете регулярное выражение. Компилятор javac – это тот, который собирается прочитать этот текст и преобразовать его во внутреннее значение String, и в этом значении будет неизолировано и на самом деле появится соответствующий d.

Во время выполнения, когда на самом деле создается регулярное выражение, оно увидит неизменяемое строковое значение, таким образом, d, которое будет правильно интерпретировано как десятичная ссылка.

Оцените статью
Добавить комментарий