Вопрос-ответ

How to escape text for regular expression in Java?

Как экранировать текст для регулярного выражения в Java?

Есть ли в Java встроенный способ экранирования произвольного текста, чтобы его можно было включить в регулярное выражение? Например, если мои пользователи вводят "$5", я бы хотел точно соответствовать этому, а не "5" после окончания ввода.

Переведено автоматически
Ответ 1

Начиная с Java 1.5, да:

Pattern.quote("$5");
Ответ 2

Разница между Pattern.quote и Matcher.quoteReplacement мне была непонятна до того, как я увидел следующий пример

s.replaceFirst(Pattern.quote("text to replace"), 
Matcher.quoteReplacement("replacement text"));
Ответ 3

Возможно, отвечать слишком поздно, но вы также можете использовать Pattern.LITERAL, который будет игнорировать все специальные символы при форматировании:

Pattern.compile(textToFormat, Pattern.LITERAL);
Ответ 4

Я думаю, что вам нужно \Q$5\E. Также смотрите Pattern.quote(s) представлен в Java5.

Подробнее см. в шаблоне javadoc.

java regex