正则表达式匹配代码中的特定注释

时间:2009-10-28 21:45:24

标签: c# regex comments

是否有任何正则表达专家可以帮我清理以下源代码?我正在浏览一些现有的代码,我看到几个类似于以下的实例:

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的注释是必要的,否则我想对所有不对代码添加任何值的注释进行查找/替换(删除)。通过浏览代码,我认为可以安全地假设任何类似于“/// 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,
}

非常感谢您的帮助!通过帮助我,你真的在​​帮助自己。因为谁知道,有一天你可能会维护这个代码!

3 个答案:

答案 0 :(得分:2)

这是一个将删除此类注释的perl脚本:

my $text = join "", <>;
$text =~ s{///\s+<summary>\s+///\s+\w+\s+=\s+\d+,\s+///\s+</summary>}{}g;
print $text;

答案 1 :(得分:2)

使用VS2008 FindAndReplace我试过这个并且工作了;

查找内容:

/// \<summary\>.*\n.*\=:b:d[:b,]*\n.*\<\/summary\>\n

替换为:

(empty)

使用:

正则表达式

答案 2 :(得分:0)

您是在使用类似unix的操作系统还是使用cygwin?

我从来没有使用正则表达式进行多行匹配,但是有一个使用sed的链接来做...

http://www.ilfilosofo.com/blog/2008/04/26/sed-multi-line-search-and-replace/

我稍后会阅读并编辑此答案,以便将其应用到您的问题中。或者也许其他人会。