帮助正则表达式

时间:2011-02-16 09:38:58

标签: regex visual-studio

我很难找到以下情况的正则表达式。请帮忙!我基本上需要使用正则表达式来使用Visual Studio在代码中查找.NET命名约定错误。

  1. 所有私有变量都应以下划线开头。因此,我需要寻找任何看起来像这样的表达式:

      

    Private #ONLY ONE WORD HERE# As (String|Integer|Boolean)

  2. 所有ASP.Net标签的ID都应以“lbl”为前缀

      

    <asp\:Label.*id=" 除了这里以外的其他人#

  3. 你如何否定一个特定的词?我尝试过^(lbl)(^lbl) ...他们不工作。

2 个答案:

答案 0 :(得分:2)

修改

从下面的评论中我收集到您正在使用VS正则表达式搜索框。这有完全自己的正则表达式风格,与.NET引擎不同。请尝试以下方法:

1:Private ~(_)[:a_]+ As (String|Integer|Boolean)

2:<asp\:Label.*id="~(lbl).*


为档案目的保留原始答案:)

1:Private (?!_)\w+ As (String|Integer|Boolean)

2:<asp\:Label.*id="(?!lbl).*

\w+是“一个或多个字母数字字符”,在您的情况下可能应该这样做。

(?!lbl)negative lookahead assertion,确保lbl无法在当前位置匹配。

^表示字符类之外的“行/字符串开头”。它只意味着[^abc](=“除abc之外的任何字符)等字符类中的”否定“

答案 1 :(得分:0)

蒂姆的第一个#1版本对我有用:

Private \w+ As (Integer|String|Boolean)

对于第二种方法:

<asp:Label.*id="(?!lbl).*?">

标签未关闭应该是它与您的示例不匹配的原因。

顺便说一下,确保在表达式上使用正确的修饰符。至少使用'i'。