Pattern.quote добавляет \Q и \E к строке java

#java #regex #pattern-matching

#java #регулярное выражение #сопоставление с шаблоном

Вопрос:

Я пытаюсь заменить текст специальными символами (которые требуют, чтобы я использовал Pattern.quote их) на версию этого текста в нижнем регистре, но функция Pattern.quote иногда добавляет Q и E в начало и конец текста, поэтому метод replace его не находит. Код, который я использую, является:

 bigText = bigText.replaceFirst(Pattern.quote(text),text.toLowerCase());
  

Есть ли способ потерять эти символы?

Комментарии:

1. Не могли бы вы привести пример text и что бы вы хотели с ним сопоставить?

Ответ №1:

Добавление Q и E — это именно то, что Pattern.quote() делает! Почему вы этого не хотите?

Если вам нужно заключить в кавычки только некоторые символы этой строки, то вы должны сделать это вручную.

Комментарии:

1. Если это так, его нельзя заменить, как я хотел. Также — почему иногда это работает (то есть не добавляет эти символы)?

2. Чтение исходного кода OpenJDK 1.6 показывает только один случай, когда они не добавлены, и это если входные данные являются null (в этом случае будет выдан NPE). И, насколько я знаю, именно так это всегда работало.

3. Да, я провел некоторое исследование, и в этом вы правы. Думаю, мне следует глубже изучить свой код, чтобы понять, почему он не заменен…