Notepad++/正規表示式尋找相同開頭、不同結尾的行

Notepad++/正規表示式尋找相同開頭、不同結尾的行

所以,我讀了一點,發現 NotePad++ 不使用「正常」正規表示式(開始認為我會回到 SciTE),但這是我的問題:

我有一個導出的數據列表,其中包含一些冗餘數據,我正在嘗試清理這些數據並將其轉換為良好的CSV 以導入到地址簿中(遷移傳真伺服器解決方案,舊的解決方案太糟糕了,所以這是最好的我可以出口)。

我嘗試從每個條目組中刪除的行始終以

條目: 姓名 ~

然後是一個 12 位元字母數字(似乎是十六進位)代碼,它對於每個條目組都是唯一的。對於一些條目組,「NAME」後面有一個人類可讀的條目,但這些條目足夠少,我可以手動刪除它們,因此匹配它們並不是一件大事。

所以我想做的是找到以 Entry: 開頭的每一行,並選擇它一直到行尾。每個組中的每個條目都位於單獨的行上。然後我將使用“查找和替換”從列表中刪除這些行。

更新:輸入和輸出

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234

這是兩個條目組。我想從每個群組中刪除以“Entry:”開頭的行。

答案1

另一個選擇是

^Entry: NAME .*

它將尋找以 開頭的行Entry: NAME以及此後的任何內容。

答案2

使用

^Entry: NAME ~\d+$

因為搜尋模式似乎按要求工作。

我個人建議使用佔位符(匹配從到\d範圍內的任何單個數字)而不是更通用的佔位符進行匹配。事實上,你甚至應該這樣做:09.

^Entry: NAME ~\d{12}$

指定您期望的確切地連續 12 位數字。這樣,如果某個條目可能包含您沒有預料到的內容,您就不會意外地替換它。

如果字串採用十六進位表示法,您可以使用:

^Entry: NAME ~[0-9a-fA-F]{12}$

請注意,我沒有檢查最後兩個範例在 Notepad++ 中是否正常運作,但據我所知,這都是非常基本的語法。

相關內容