簡體   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