正则表达式替换特殊注释

3

几个月前,我的一个同事离开了。他过去总是这样注释他的代码:

//----------------------------
// COMMENT
//----------------------------

private void func()...

每个注释都使用了4行(包括换行符),这让我很疯狂。我正在尝试创建一个正则表达式,可以安全地删除并替换此注释。上面的代码应该像这样:

// COMMENT
private void func()...

我想直接删除每个 '//----------------------------' ,但这样会留下很多空行,以及在注释和实际需要描述的行之间插入断行符。非常感谢您的帮助。 编辑 注意一: 我们的项目是在Visual Studio中编写的。 注意二: 一些注释可能包含多行注释,例如:
//----------------------------
// LINE 1 COMMENT
// LINE 2 COMMENT
//----------------------------

你试过在搜索字符串中添加 \r\n 吗? - Wiktor Stribiżew
^^^^并删除多行,请搜索:([\r\n])+并替换为$1 - Tushar
除了其他评论者的建议外,您可能需要启用多行匹配模式才能使其正常工作。如何做取决于您使用的工具。 - user1919238
2个回答

3

这个表达式匹配您的情况和任何3行评论,其中第一行和最后一行都有尾随-

((\s|\t)*\/{2,})(.*[-]+)(\r?\n)((\1(.*)\4?)+)\4\1\3\4?

在这里尝试

然后你可以用以下内容替换它:

\5 (or $5)

编辑:针对多行注释。


在Visual Studio中,替换行应该是'//$5'吗? - Skatz1990
在VS中,必须使用$i代替\i,其中i是数字组引用。 - AlexBay
请注意,这个正则表达式完美地工作了。然而在项目中我无法使用“replace-all”,因为我发现有些注释在注释和描述的代码行之间没有换行符,而有些则有。我的解决方法是在代码行和注释之间添加一个换行符,然后您的正则表达式就完美地工作了。谢谢。 - Skatz1990

1
这里有一个正则表达式,可以用来去除多余(装饰性)注释行,并将这些臃肿的注释转换为一行。

它还支持缩进和使用以下样式的多行注释:

//----------------------------
// LINE 1 COMMENT
// LINE 2 COMMENT
//----------------------------

private void func()...

找到:
(( |\t)*?\r\n)?( |\t)*?//-+(\r\n( |\t)*?// .+)+\r\n( |\t)*?//-+\r\n

替换为:

替换为:

\4

如果替换失败,请将\4替换为$4

祝你好运!


正如你所说,例如在Notepad++中'\2'有效,但在VS中'$2'有效。 - Skatz1990

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接