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

#java #regex

#java #регулярное выражение

Вопрос:

Я пытаюсь запомнить правильную нотацию для выполнения поиска-замены совпадений регулярных выражений в Java.

Допустим, у меня есть строка

     String s = "My name is ''Eric'' and I have a bee called ''Eric'' 
and a fish called ''Wanda''."
  

Я хочу сделать что-то вроде следующего:

 s.replaceAll("''$$''", "$$");
  

Для справки: Меня зовут Эрик, и у меня есть пчела по имени Эрик и рыбка по имени Ванда.

Но я знаю, что $$ — это неправильное обозначение, чтобы фиксировать все, что есть в » и использовать его для замены найденного совпадения.

Какую именно нотацию я здесь ищу?

Заранее спасибо.

-Дэйв.

Ответ №1:

 s.replaceAll("''(.*?)''", "$1");
  

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

1. Вы уверены, что синтаксис работает? regular-expressions.info говорит, что Java поддерживает только синтаксис $ для обратных ссылок.

2. Я ничего не гарантирую, поскольку сам этого не пробовал. Но Pattern Javadoc заявляет n Whatever the nth capturing group matched

3. Да, это не \ 1 или 1. Я проведу несколько тестов и обращусь к приведенному ниже.

4. .Замените все(«»(.*?)»», «$1») дает мне то, что я хотел. Приветствия.