【问题标题】:find any summary that does not end with a dot查找任何不以点结尾的摘要
【发布时间】:2012-06-12 08:10:06
【问题描述】:

我正在寻找我的项目的一致性。但是当我打字时,我并不总是记得它。当我评论了我的项目的一半并且我不知道我是否以 . 结束所有行时,这导致我遇到一个问题。

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

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

这意味着开头有空格,总是三个/,它们都包含在&lt;summary&gt;标签内。

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

^///$[^\.]

基于

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

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

【问题讨论】:

  • . 在字符类 ([]) 中时不需要转义。例如,[a.] 仅匹配 a. 字符,而不匹配任何字符。
  • @Amber 谢谢,不知道
  • 我添加了视觉工作室。每当你做正则表达式时,指定风味是必不可少的(有几种方言略有不同)
  • @sehe 谢谢,不知道

标签: regex visual-studio summary


【解决方案1】:

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

///.*[^\.]$

我们如何构建它。

我们知道我们要查找的 cmets 以 '///' 开头而不以 '.' 结尾,这两个字符串可以匹配为 '///' 和 '[^.]' 在两者之间我们可以有什么,所以'.*'

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

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

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

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

$ 是什么意思

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

【讨论】:

  • 我们开始!这个修好了。你介意解释一下这个过程吗?
  • 好的,最后一个问题是 $ 输入的内容(尽管我很确定我理解它)。它是否像 * 一样“将最后一个字符作为输入”?
【解决方案2】:

您可能需要考虑行首 (col 0) 和 /// 之间的空白。也许这会起作用^\s*///.*[^.]$

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

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

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

【讨论】:

  • 这很奇怪。这应该匹配所有以“空格+///”开头的行吗?
  • 这(^\s*///)只匹配所有以一些(或没有)空格开头然后是三个斜杠的行
  • Visual Studio 声明它找不到此文本。莫非是VS看不懂/s?
  • @Default - 我将部分正则表达式更改为完整正则表达式并添加了解释。
  • 没有必要将它与字符串的开头相关联,因此在匹配开始时不需要'^\s*'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
相关资源
最近更新 更多