我已经阅读过类似的问题,但我无法解决这个问题。我想将正则表达式用于支持C#正则表达式的Find-Replace Visual Studio工具。
我想找到(并且没有替换)表达式,例如:
System.Collections.Generic.List
System.Web.UI.WebControls.Button
然后移除System.Collections.Generic.
和System.Web.UI.WebControls
以整理我的代码。
但我希望能够在'系统'之后添加新单词。表达式,如果我想缩放它。所以我创造了这个:
(System\.)?(Collections\.)?(Generic\.)?(Web\.)?(UI\.)?(WebControls\.)?
但是,这也会使用以下语句进行更改:
using System.Data.SqlClient;
有没有办法改变我的正则表达式,使其不包含以“using”关键字开头的匹配项?
我尝试过使用:
(^?!using)(System\.)?(Collections\.)?(Generic\.)?(Web\.)?(UI\.)?(WebControls\.)?
但这不起作用。谢谢!
答案 0 :(得分:1)
使用负向lookbehind,断言匹配不在endpoints.cors.*
但是,由于所有部分都是可选的,因此它将匹配
中的using
Collections.
这可能是不想要的,也有很多正则表达式引擎有限制,lookbehinds不能有可变长度匹配。
答案 1 :(得分:0)
您拥有的语法将允许部分匹配。尝试指定"使用"必须出现0次。 ^(使用){0}
如果这不起作用,您可以执行以下操作: 1.使用system"查找和替换"与" usingsistem"。 2.查找并替换system.whatever。 3.查找并替换" usingsistem"用"使用系统"