Обратные ссылки регулярных выражений в IntelliJ



Я хочу использовать функцию поиска и замены IntelliJ для выполнения следующего преобразования:



// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar


Я пробовал следующие:



текст для поиска: model.put((.*),(.*))
Заменить на: model[1] = 2



но Intellij, кажется, не узнает 1 и 2 как обратные ссылки. Я также пробовал один Слэш, но это тоже не работает.

477   4  

4 ответов:

IntelliJ использует на замена обратные ссылки.

С помощью IntelliJ:

дополнительные сведения о регулярных выражениях и их синтаксисе см. В документации по java.утиль.регулярное выражение обратные ссылки должны иметь $n, а не \N формат.

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

в IntelliJ 2016 документация в приложении вводит в заблуждение. Вот лучшая цитата из полных документов:

Если вам нужно сослаться на соответствующую подстроку где-то вне текущего регулярного выражения (например, в другом регулярном выражении в качестве строки замены), вы можете получить его с помощью знак доллара ($num, где num = 1..северный.)

источник: 2016.1 синтаксис регулярных выражений, советы и хитрости

контекстная справка по продукту для регулярного выражения в Idea 9.0 (и, возможно, других версиях) кажется неправильной. В нем говорится следующее:

  Back references
  \n
  Whatever the nth capturing group matched

но, видимо, как упоминалось в предыдущих ответах и мой опыт, это действительно \$n для обратных ссылок, а не \n

вы получаете эту контекстную справку, нажав на ссылку '[Help] ' рядом с опцией радио "регулярное выражение" в диалоговом окне "заменить текст"

IntelliJ IDEA / Reference / Regular Expression Syntax Reference


соответствует подвыражению и запоминает совпадение. Если вам нужно использовать подобранную подстроку в том же регулярном выражении, вы можете получить ее с помощью backreference (\num, где num = 1..северный.) Если вам нужно сослаться на соответствующую подстроку где-то вне текущего регулярного выражения (например, в другом регулярном выражении в поле замены), вы можете получить его с помощью доллара знак ($num, где num = 1..северный.) Если вам нужно включить символы скобок в подвыражение, используйте "(" или ")".

Comments

    Ничего не найдено.