Notepad ++ Search/Replace with Regular Expressionを使用して、特定の単語をそれらの単語の短いバージョンに置き換えようとしました。
次の正規表現を使用して、er
で終わるすべての単語に一致します(ただし、単語としてer
は一致しません)-一致する単語を、同じ単語から末尾のr
、後方参照を使用して:
Find what:
([a-zA-z]+e)r
Replace with:
$1
ただし、一致する単語は検出されますが、置換されません。
ただし、後方参照構文をこれに変更した場合:
Replace with:
\1
すべてが正常に動作します。
なぜ$1
後方参照が動作しますか?
後方参照の2つの形式の違いは何ですか-\1
および$1
?
Notepad ++の以前のバージョン(v5.9.8以前)は、標準 [〜#〜] posix [〜#〜] 正規表現のみをサポートしていました。ただし、完全な [〜#〜] pcre [〜#〜] (Perl互換の正規表現)検索/置換のサポートはバージョン6.0で追加されました。
- PCRE(Perl Compatible Regular Expressions)がサポートされています。
つまり、Notepad ++ v6.0以降のバージョン(v6.1.5など)を使用している場合は、PCRE構文を使用し、$1
の代わりに \1
は後方参照用ですが、Notepad ++の以前のバージョン(バージョン6.0より前)との互換性はありません。それ以外は似ています。
後方参照構文と新しい構文サポートの背後にある理由の違いに関する詳細については、 置換文字列の後方参照構文(なぜドル記号?) 。
Notepad ++で正規表現を使用する方法に関する有用なチュートリアルは、 here にあります。