[英]C# Regex - Match expression that does not start with a specific word
我读过类似的问题,但我无法让它发挥作用。 我想将正则表达式用于支持 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\\.)?
但这不起作用。 谢谢!
使用否定后视,断言匹配之前不using
然而,由于所有部分都是可选的,它将匹配Collections.
在
using System.Collection.Generic.List
这可能是不想要的,许多正则表达式引擎也有一个限制,lookbehinds 不能有一个可变长度的匹配。
您拥有的语法将允许部分匹配。 尝试指定“使用”必须出现 0 次。 ^(使用){0}
如果这不起作用,您可以执行以下操作: 1.查找并用“usingsistem”替换“using system”。 2. 查找并替换 system.whatever。 3. 查找“usingsistem”并将其替换为“using system”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.