web-dev-qa-db-ja.com

検索/置換のNotepad ++ Regex後方参照構文-\ 1または$ 1

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

33
amiregelz

Notepad ++の以前のバージョン(v5.9.8以前)は、標準 [〜#〜] posix [〜#〜] 正規表現のみをサポートしていました。ただし、完全な [〜#〜] pcre [〜#〜] (Perl互換の正規表現)検索/置換のサポートはバージョン6.0で追加されました。

Notepad ++ 6.0の新機能と機能強化:

  • PCRE(Perl Compatible Regular Expressions)がサポートされています。

つまり、Notepad ++ v6.0以降のバージョン(v6.1.5など)を使用している場合は、PCRE構文を使用し、$1 の代わりに \1は後方参照用ですが、Notepad ++の以前のバージョン(バージョン6.0より前)との互換性はありません。それ以外は似ています。

後方参照構文と新しい構文サポートの背後にある理由の違いに関する詳細については、 置換文字列の後方参照構文(なぜドル記号?)

Notepad ++で正規表現を使用する方法に関する有用なチュートリアルは、 here にあります。

34
amiregelz