\zs
と\ze
を使えば、正規表現のマッチする範囲を指定できて、置換がとても楽になる。
例えば、
<div>ABCDEF</div> <p>123456</p> <div class="sample">abcdef</div>
という文字列があって、divタグの中身だけ変えたい時。
普通にやると、ちょっとめんどくさい正規表現を書かないと置換できません。
%s/\(<div.*>\).\+\(<\/div>\)/\1REPLACE\2/
だいぶごちゃごちゃしてます。
でもこれを、\zs
と\ze
を使えば、こうなります。
%s/<div.*>\zs.\+\ze<\/div>/REPLACE/
マッチする部分が、\zs
から\ze
で囲んだ部分だけになるので、()
でグループ化して後方参照させる必要がなくなります。
便利すぎる。