5

私はVIMでより複雑な検索と置換機能を実行する方法を学び、次のようなユースケースに出くわしました。

:%s/$/|/g

これはおそらくすべての行の終わりを見つけて、それを垂直パイプに置き換えます。ただし、これを最初に学習したときは、期待される結果を得るには、置換文字列に行末文字を追加する必要があると思いました。すなわち、

:%s/$/|$/g

なぜそれなしで動作し、それでも改行を保持するのですか?行の終了文字を文字列に置き換えて、その過程で削除するべきではありませんか?

行頭文字で同じことを尋ねることができます^

4

1 に答える 1

17

アンカー$には改行文字は含まれません。実際、それはゼロ幅のトークンです。文字列の最初の改行の直前の空の文字と一致します。したがって、結果。

同様に、文字列の最初^の文字の前にある空の文字と一致します。

詳細については、 http://www.regular-expressions.info/anchors.htmlを参照してください。

于 2012-12-18T19:34:57.627 に答える