4

我在我的项目中寻找一致性。但是当我打字时,我并不总是记得它。当我评论了我的项目的一半并且我不知道我是否以 .

所以,我想找到所有不以点结尾的摘要来解决这个问题。这方面的一个例子是:

    /// <summary>
    /// This is my summary
    /// </summary>

这意味着有起始空格,总是三个/,它们都包含在一个<summary>标签内。

我开始研究它并得到了这个:

^///$[^\.]

基于

^ start of line
/// the three slashes
$ end of line
[^\.] that doesn't end with a dot.

但我无法让它发挥作用。如何找到所有不以 . 结尾的摘要行?

4

2 回答 2

7

您不需要锚定到字​​符串的开头,因为它是标记注释行开头的“///”

///.*[^\.]$

我们如何建立这个。

我们知道我们正在寻找的评论以'///'开头并且不以'.'结尾,这两个字符串可以匹配为'///'和'[^.]'在我们之间我们可以有任何东西,所以 '。*'

您不需要在开头使用“^”,因为注释不必从字符串/行的开头开始。

您可能还想考虑尾随空格,所以

///.*[^\.]\s*$

我可能错过了其他几点,所以请大声喊叫

是什么$意思

正则表达式中的“$”符号是字符串结尾的锚点。它有点匹配新行,除了(可能取决于实现)它可以简单地匹配输入的结尾。它的工作原理与匹配输入开头的 '^' 相同

于 2012-06-12T08:14:15.187 回答
2

您可能需要考虑行的实际开头(col 0)和///. 也许这会奏效^\s*///.*[^.]$

  • ^- 行首(即第 0 列,不是第一个可见字符)
  • \s*- 可选空格
  • ///- 评论开始
  • .*- 任何文字
  • [^.]- 除了一个.
  • $- 行尾(在最后一个字符之后)

编辑
Visual Studio 搜索正则表达式显然不同于常规正则表达式:http: //msdn.microsoft.com/en-us/library/2k3te2cs.aspx

似乎您需要 a:Zs而不是 a\s来匹配空格(或完全跳过它并使用 just ///.*[^.]$,如建议的那样)。

于 2012-06-12T08:14:23.220 回答