Notepad++ で検索結果の n 番目の単語を置き換えるにはどうすればよいでしょうか?

Notepad++ で検索結果の n 番目の単語を置き換えるにはどうすればよいでしょうか?

Notepad++ に以下のようなテキスト行があります:

dog cat duck fan dog donkey

以下のように、2 番目に出現する「dog」という単語を「peacock」に置き換えます。

dog cat duck fan peacock donkey

答え1

これを解決できるのは、いわゆる正規表現、下記を参照してください。ご存知かどうかわかりませんが、正規表現は(dog.*)(dog)「dog」という単語が2回出現するすべての行に一致し、$1peacock検索結果を一致の最初の部分(dog.*)に続いて で置き換えますpeacock。ダイアログの下部にある検索モードを「正規表現」に設定してください。

ここに画像の説明を入力してください

これにより、次の結果が生成されます。

ここに画像の説明を入力してください

答え2

置換するのは n 番目の単語ですか、それとも 2 番目に出現する単語ですか?

前者の場合は、次のような正規表現を使用します。

置換ウィンドウにCTRL+と入力します。h

検索:^(([^ ]+ ){4})([^ ]+ )(.*)
置換:$1peacock$3
すべてのボックスのチェックを外し、ラジオボタンの正規表現を選択します。

RegEx を説明します。

  • ^行頭、$行末のアンカー
  • ()キャプチャグループを構築する
  • ([^ ]+ )[]クラスを表し、その^内側は否定クラスを意味します。つまり、これはスペースではなく、+少なくとも 1 つ、できるだけ多くのをまとめることを意味します。その後にスペースが続きます。全体として、これは最初の単語と一致します。
  • 次のもの{4}は4つの単語を取得し、これは別の括弧で囲まれているため、このキャプチャグループは最初の4つの単語を取得します。
  • 次の単語とスペースが置換対象となり、([^ ]+ )その後に行の残りの部分が続きます。(.*)$
  • 置換は、$1置換された 最初の(ネストされた)グループと、 5番目の単語を捨てたpeacock行の残りの部分を再挿入します。$3$2

関連情報