在Visual Studio 2012中查找所有已注释的行

4

我的项目由很多人开发。其中有许多开发人员仅对他们的少数代码进行了注释。

我有很多代码,例如:

        //ServiceResult serviceResult = null;
        //JavaScriptSerializer serializer = null;
        //ErrorContract errorResponse = null;

他们使用 // ,不使用 /**/。如何使用正则表达式在 Visual Studio 2012 中查找所有这样的注释行?

在查找中,不应该找到任何包含 ///


尝试使用(?m)(?<=;\s*|^\s*)(?<!/)//(?!/).*$,但正则表达式仍可能存在问题。此外,请检查这里的方法。 - Wiktor Stribiżew
6个回答

3

只需尝试以下步骤:

(?<!/)//.*(?!/)
  • (?<!\/) 负向先行断言 - 检查//前一个字符不是/
  • //.* 匹配除换行以外的任意字符,包括//
  • (?!/) 负向后行断言 - 检查//后一个字符不是/

2
使用这个模式。
(?<!/)//(?!/)

(?<!/)表示在//之前不能有/

(?!/)表示在//之后不能有/


你的表达方式不起作用,需要转义'/'。 - maraaaaaaaa
@Andrew:它不应该被转义。至于解释:该表达式匹配未包含在“/”中的2个连续的“/”。但是,恐怕这个正则表达式不是正确的答案。 - Wiktor Stribiżew
首先,是的它可以... https://regex101.com/r/mT9tK8/1,其次,这甚至不能捕获注释文本,它只能捕获破折号。 - maraaaaaaaa
@Andrew:请检查标签:它是.NET,而不是PCRE。您无法在regex101.com上测试.NET正则表达式。我也没有说它是正确的。和你的一样。 - Wiktor Stribiżew
好的,如果是.NET,我同意,但我们是不是因为c#标签而假设它是.NET?第二个评论是@KuttanSujith。 - maraaaaaaaa

1
尝试使用这个正则表达式:

^\s*(?<!/)(//(?!/).+)$

第一组应该给你注释行。

演示


1
尝试使用此表达式:(?<!\/)\/\/[^\/].*。对于提到的.NET,请使用:(?<!/)//[^/].*

在.NET正则表达式中,不需要转义斜杠。 - Wiktor Stribiżew

1

这应该涵盖大多数间距情况,并在所有版本的VS中工作。我相信正向零宽断言只支持在VS2013中使用。

^(?:\s|\t)*?//(?!/\s*<).+$

-3
表达式应该像这样:
//.*

它不应该找到任何带有 /// 的 XML 注释。 - CodeCaster

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