заменить строку1 на строку2 во многих файлах Java, только в комментариях - PullRequest
2 голосов
/ 30 июня 2011

У меня есть около 3000 экземпляров замены в сотнях файлов. Заменить все вхождения string1 на string2 было легко. IntelliJ позволяет мне заменить все вхождения в «комментариях и строках».

Проблема в том, что одна и та же строка появляется в комментариях и реальном коде. Я хотел бы ограничить замену только в разделе комментариев (мы используем сочетание / ** / или //)

Любая библиотека / IDE / скрипт, который может это сделать?

Ответы [ 2 ]

4 голосов
/ 01 июля 2011
use Regexp::Common 'comment';
...
s/($RE{comment}{'C++'})/(my $x = $1) =~ s#string1#string2#g; $x/ge;
1 голос
/ 30 июня 2011

Попробуйте использовать следующее регулярное выражение, чтобы найти все комментарии, а затем замените то, что вы хотите потом:

/(?>\/\*[^\*\/]*\*\/|\/\/([^\n])*\n)/

Первая часть \/\*[^\*\/]*\*\/ Пытается найти все пары /**/, где он находит что-то, что начинаетсяс /* и затем содержит что-то отличное от конечного тега */ и содержит конечный тег * /.

Другая часть проверяет что-то, начинающееся с // и переходящее к конечной строке (\n) исодержит что-то, что не переводится между ([^\n]*).

Таким образом, все комментарии должны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...