chr*_*ris 3 regex asp.net lookahead regex-lookarounds
我有一种情况,我需要在VS项目中搜索没有定义MaxLength属性的任何控件.
例如:
<asp:TextBox ID="txtName" runat="server" MaxLength="50" Text="Enter Name" />
<asp:TextBox ID="txtOther" MaxLength="25" runat="server" />
<asp:TextBox ID="MaxLength" runat="server" />
<asp:TextBox ID="txtMisc" runat="server" Width="100" />
Run Code Online (Sandbox Code Playgroud)
有没有人建议使用正则表达式模式来找到没有定义MaxLength的控件?
我对此的第一次尝试,似乎有效,似乎不完美......
<asp:TextBox.*?M(?!axLength=).*?/>
Run Code Online (Sandbox Code Playgroud)
我很想看到更好的解决方案.
注意:Visual Studio搜索在上面的模式中窒息.我被迫使用不同的应用程序来实际使用此模式进行搜索
我想这就是你想要的:
<asp:TextBox(?:(?!MaxLength=|>).)*/>
Run Code Online (Sandbox Code Playgroud)
一次.消耗一个字符,但只有在前瞻确定它不是>或开头之后MaxLength=.请注意,您必须>在前瞻中排除,否则它将继续查找MaxLength=当前元素的末尾.例如,应用于
<asp:TextBox ID="txtMisc" /><asp:TextBox MaxLength="50" />
Run Code Online (Sandbox Code Playgroud)
...你希望它匹配第一个标签,但它不会,因为前瞻MaxLength=在第二个元素中看到.一个非贪婪的量词.*?就不会阻止这种情况的发生.看起来它可能正常工作,但这只是因为标签通常出现在单独的行上,并且.与新行不匹配.
Visual Studio版本将是:
\<asp\:TextBox(~(MaxLength=|\>).)*/\>
Run Code Online (Sandbox Code Playgroud)
<,>并且:所有在VS正则表达式中都有特殊含义并且必须进行转义,并且~(...)是否为前瞻性的VS语法.
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |