我有多个看起来像这样的代码实例......
if (condition) {
statements
}
else if (different condition) {
statements
}
令人厌烦(可能,老实说大约 100 多次,并且在不同的文件中)。
我一直在慢慢地努力修复它们,以便它们能够做到:
if (condition) {
statements
} else if (different condition) {
statements
} else if (different condition) {
我的问题是应该有一些正则表达式允许我抓取仅带有右括号的行,以及开始else if
并将它们合并在一起以进行} else if
替换的行(这应该使其余的 else if 条件与之一致......)
但我很困惑,不知道什么组合才能真正达到这个效果!
任何帮助将不胜感激!!!
答案1
因此,在玩了更多之后,我发现如果我这样做,\t}(\r\n)(\t)else if
就会发现
}
else if (condition) {
... and so on...
然后\t} else if
在替换字段中使用我想要的更改。
答案2
正则表达式替换非常简单,使用 Perl 或扩展正则表达式看起来会像这样(利用高度来表示额外的空格):
s/\}\s*\r?\n\s*else\s+if\s*/} else if /
棘手的部分可能是将多行作为一个字符串而不是逐行输入替换。使用 perl,您可以使用-00
(告诉 perl 使用空字节作为输入记录分隔符)来实现这一点,因此如下:
perl -00 -pe 's/\}\s*\n\r?\s*else\s+if\s*/} else if /g' -i /tmp/file.code
将取代所有
}
else if
在您的 file.code 中出现
} else if
观察/g
替换中的选项用于替换所有出现的项。如果没有此选项,则只会替换第一个出现的项。