
我在 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