如何在 Notepad++ 中使用通配符來「尋找並取代」所有這些文字?

如何在 Notepad++ 中使用通配符來「尋找並取代」所有這些文字?

我真的很感激一些幫助。我正在處理大量已用 XML 腳本標記的文本,我需要整理一些內容。更具體地說,我需要刪除方括號中的數百個數字(即,如“[1234]”)(包括括號)。每個數字都不同,而這些數字可以是 3 到 5 位數字。

我需要做的第二件事是在其他一些文字片段周圍放置 XML 標記。這些是圓括號中的名稱。即,像:

他(史密斯先生)說…

我想將其更改為:

<annot> (Mr. Smith) </annot>說...'。

我怎麼才能執行這兩項更改?

我已經嘗試使用擴展模式並蒐索“[.*]”,但它沒有返回任何結果。當我嘗試使用 RegEx 進行相同操作時,我得到了很多命中,但它似乎正在搜尋語料庫中的每個方括號。

答案1

方括號是正規表示式中的特殊標記(表示to[a-z]範圍內的任何字元),因此您必須對它們進行轉義。az

您的搜尋表達式將變為\[\d+\]\d+表示一位或多位數字)。但是您想僅用數字替換它。您需要使用括號設定一個捕獲組,並在替換表達式中引用它。您的設定變為:

  • 搜尋:\[(\d+)\]
  • 用。\1

至於你的第二個問題,我不確定我是否正確理解了你給出的上下文......如果括號之間只有名稱,你可以替換\([^\)]+\)<annot> \0 </annot>,或者\(Mr\. [^\)]+\)如果名稱前面帶有Mr.

詳細來說,它的工作方式是這樣的:

  • 您搜尋的括號必須被轉義(因為它們通常用於定義捕獲組,因此您使用\(\)
  • [^...]+表示一個或多個字符,但不是...
  • 因此,您的搜尋表達式是一個左括號,後面跟著任何不是右括號的字元(因此它應該與名稱相符),然後是右括號。
  • \0表示替換區域中的整個搜尋表達式

如果您有要替換的這些名稱的列表,那麼您最好將\(whatever name\)其用作搜尋表達式,如果沒有,則這是不可能的,因為您無法使用正則表達式「猜測」什麼是名稱,什麼不是。

相關內容