【问题标题】:replace string1 with string2 in many java files, only in comments在许多java文件中用string2替换string1,仅在注释中
【发布时间】:2011-06-30 17:08:17
【问题描述】:
我在数百个文件中完成了大约 3000 个替换实例。用 string2 替换所有出现的 string1 很容易。 IntelliJ 允许我替换“cmets 和字符串”中的所有出现。
问题是相同的字符串出现在 cmets 和真实代码中。我想只在评论部分限制替换(我们使用 /**/ 或 // 的组合)
任何库/IDE/脚本可以做到这一点?
【问题讨论】:
标签:
perl
intellij-idea
replace
read-eval-print-loop
【解决方案1】:
use Regexp::Common 'comment';
...
s/($RE{comment}{'C++'})/(my $x = $1) =~ s#string1#string2#g; $x/ge;
【解决方案2】:
尝试使用以下正则表达式查找所有 cmets,然后替换您想要的内容:
/(?>\/\*[^\*\/]*\*\/|\/\/([^\n])*\n)/
第一部分\/\*[^\*\/]*\*\/ 尝试查找所有/**/ 对,其中找到以/* 开头的内容,然后包含除结束标记*/ 和包含结束标记*/ 之外的内容。
另一部分检查以// 开头并转到endline(\n) 并且在([^\n]*) 之间包含非换行符的内容。
因此它应该是所有cmets