16

次の行があるとします。

a|b|c

正規表現を実行して次のように変換したいと思います:

a\|b\|c

私がよく知っているほとんどの正規表現エンジンでは、次のようなものが機能s%\|%\\|%gするはずです。これを Vim で試すと、次のようになります。

\|a\||\|b\||\|c

結局のところ、この質問を入力しているときに答えを発見しました。とにかく、検索で重複が見つからなかったことに少し驚いたので、ソリューションと一緒に提出します。

4

3 に答える 3

8

Vim はこの点で PCRE とは反対のことを行います:|はリテラルのパイプ文字であり\|、代替演算子として機能します。パイプ文字をエスケープする必要がないため、適切なエスケープ シーケンスが見つかりませんでした。

次のコマンドは、私の例の行に対して機能します。

:. s%|%\\|%g
于 2013-09-18T20:59:41.623 に答える
3

very-magic(use ) を使用する\vと、ほとんどの特殊文字 (vim の仕様を除く) で Perl/pcre の動作が得られます。

:s#\v\|#\\|#g
于 2013-09-18T21:05:44.057 に答える