如何在Notepad++中取代搜尋結果的第n個單字?

如何在Notepad++中取代搜尋結果的第n個單字?

我在 Notepad++ 中有以下文字行:

dog cat duck fan dog donkey

我想將第二次出現的“狗”一詞替換為“孔雀”,如下所示。

dog cat duck fan peacock donkey

答案1

你可以用所謂的解決這個問題常用表達, 見下文。我不確定您是否熟悉它們,但正則表達式(dog.*)(dog)將匹配單字「dog」出現兩次的所有行,並將$1peacock查找結果替換為匹配的第一部分 ( dog.*) 後跟peacock。確保將對話方塊底部的搜尋模式設定為「正規表示式」。

在此輸入影像描述

這將產生以下結果:

在此輸入影像描述

答案2

是要替換的第 n 個單字還是第二次出現的單字?

對於前者,請使用這樣的正規表示式

鍵入CTRL+h作為替換視窗。

在尋找內容:^(([^ ]+ ){4})([^ ]+ )(.*)
替換為:$1peacock$3
取消選取所有方塊並選擇單選按鈕正規表示式

解釋正規表示式:

  • ^錨點位於行首、$行尾
  • ()建立一個捕獲組
  • ([^ ]+ )the[]表示一個類,^內部表示一個否定類,所以這意味著 - 不是一個空間, the+至少聚集一個但盡可能多。後面跟著一個空格。總的來說,這將匹配第一個單字。
  • 以下內容{4}獲取 4 個單詞,並且由於它被另一組括號括起來,因此該捕獲組獲取前四個單詞
  • 下一個單字和空格是要替換的單字和空格([^ ]+ ),然後是該行的其餘部分(.*)$
  • 替換重新插入第一個(嵌套)組與$1替換 peacock,並且該行的其餘部分$3拋出第 5 個單字$2

相關內容