Как использовать структурную замену IntelliJ для «всех совпадений, кроме ...»? - PullRequest
0 голосов
/ 06 сентября 2018

Допустим, я хочу заменить print(x) на print(wrapper(x)). Я могу соответствовать

print($Argument$)

и замените его на

print(wrapper($Argument$))

Однако, если у меня уже есть звонок на print(wrapper(x)), я не хочу заменять его на print(wrapper(wrapper(x))). Как я могу избежать этого? Другими словами, как мне сказать «сделать замену, если аргументы не соответствуют некоторому шаблону»?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы бы:

  1. Введите шаблон поиска (например): System.out.println($args$)
  2. Нажмите Edit Variables
  3. Выберите $args$ переменную
  4. Под Text constraints -> Text/regexp введите ^wrapper\(.*\)$ и отметьте Invert condition

Очевидно, что вы можете настроить это регулярное выражение на все, что захотите. Инвертировать условие означает, что поиск пропустит все случаи, когда условие выполнено. По сути, вы пишете регулярное выражение в соответствии с тем, что вы не хотите видеть, а Invert condition является оператором NOT.

В моем тестовом тексте:

System.out.println( ex.getMessage() );
System.out.println( wrapper( ex.getMessage() ) );

Второй экземпляр отсутствует в результатах поиска.

...