viの正規表現で、span等のタグを複数行マッチさせる方法

プログラミング

viの正規表現が他と異なり上手くいかない

今回やりたかったのはviでの正規表現で、普段使っているPythonの正規表現の書き方と大分違うということで苦戦しました。

今回やりたかった正規表現

<span>hogehoge1</span>
abc
<span>hogehoge2</span>

所謂、perl等での正規表現だと以下のような感じにすると、複数行マッチさせることが出来ます。

<span>((?!<span>).)*?<\/span>

これをviの正規表現だとどう書くか

vimの正規表現の書き方は独特で、perl等のものとは大分違うものでした。。

vimの場合は、 \_. が改行を含む任意の文字列を表すのだそうです。
そして、最短一致の書き方は \{-} で、これらを組み合わせると以下のような感じになります。

<span>\_.\{-}<\/span>

最後に

これで、複数行マッチ出来て、vimでの置換等が凄い捗るようになりました!

普段あまりviを使っていないので気付かない部分も大きいですが、正規表現の書き方も変わるとなるとなかなか大変ですね。

コメントを残す