
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