繁体   English   中英

C# Regex - 匹配不以特定单词开头的表达式

[英]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

(?<!^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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM