我很难找到以下情况的正则表达式。请帮忙!我基本上需要使用正则表达式来使用Visual Studio在代码中查找.NET命名约定错误。
所有私有变量都应以下划线开头。因此,我需要寻找任何看起来像这样的表达式:
Private
#ONLY ONE WORD HERE#As (String|Integer|Boolean)
所有ASP.Net标签的ID都应以“lbl”为前缀
<asp\:Label.*id="
除了这里以外的其他人#
你如何否定一个特定的词?我尝试过^(lbl)
和(^lbl)
...他们不工作。
答案 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]
(=“除a
,b
或c
之外的任何字符)等字符类中的”否定“
答案 1 :(得分:0)
Private \w+ As (Integer|String|Boolean)
对于第二种方法:
<asp:Label.*id="(?!lbl).*?">
标签未关闭应该是它与您的示例不匹配的原因。
顺便说一下,确保在表达式上使用正确的修饰符。至少使用'i'。