正则表达式匹配代码中的特定注释
Posted
技术标签:
【中文标题】正则表达式匹配代码中的特定注释【英文标题】:Regex to match specific comments in code 【发布时间】:2010-12-11 01:14:05 【问题描述】:是否有任何正则表达式专家可以帮助我清理以下源代码?我正在浏览一些现有代码,我看到了几个类似于以下内容的实例:
public enum Numbers
/// <summary>
/// One = 1,
/// </summary>
One = 1,
/// <summary>
/// Two = 2,
/// </summary>
Two = 2,
/// <summary>
/// Three = 3,
/// </summary>
Three = 3,
/// <summary>
/// Four = 4 but don't use this because it will break everything,
/// </summary>
Four = 4,
除非有人能告诉我 1-3 的 cmets 是必要的,否则我想对所有不会为代码添加任何价值的 cmets 执行查找/替换(删除)。通过浏览代码,我认为可以安全地假设任何类似于“/// word = number”的行都可以替换。清理一下,我觉得应该是这样的:
public enum Numbers
One = 1,
Two = 2,
Three = 3,
/// <summary>
/// Four = 4 but don't use this because it will break everything,
/// </summary>
Four = 4,
非常感谢您的帮助!通过帮助我,你真的是在帮助自己。因为谁知道呢,有一天你可能会维护这个代码!
【问题讨论】:
【参考方案1】:使用 VS2008 FindAndReplace 我尝试了这个并且工作了;
查找内容:
/// \<summary\>.*\n.*\=:b:d[:b,]*\n.*\<\/summary\>\n
替换为:
(empty)
用途:
正则表达式
【讨论】:
谢谢,您为我节省了数千次不必要的击键和鼠标高亮显示!【参考方案2】:这是一个 perl 脚本,它将删除此类 cmets:
my $text = join "", <>;
$text =~ s///\s+<summary>\s+///\s+\w+\s+=\s+\d+,\s+///\s+</summary>g;
print $text;
【讨论】:
\s
已经包含\n
,所以[\s\n]+
可以写成\s+
。【参考方案3】:
您是在开发类似 unix 的操作系统还是使用 cygwin?
我从来没有用正则表达式进行多行匹配,但是有一个关于使用 sed 进行匹配的链接...
http://www.ilfilosofo.com/blog/2008/04/26/sed-multi-line-search-and-replace/
稍后我将阅读并编辑此答案以将其应用于您的问题。或者也许其他人会。
【讨论】:
实际上我正在使用 Visual Studio,我打算使用正则表达式尝试查找/替换并替换为空字符串。以上是关于正则表达式匹配代码中的特定注释的主要内容,如果未能解决你的问题,请参考以下文章