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