使用 VS 查找和替换正则表达式跨行

使用 VS 查找和替换正则表达式跨行

我有多个看起来像这样的代码实例......

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替换中的选项用于替换所有出现的项。如果没有此选项,则只会替换第一个出现的项。

相关内容