Keep It Real BLOG

ソフトウェアエンジニア。1児の父。 酒、ラーメン、サッカー好き。旅行も好きですが、普段は出不精で大抵たまプラーザ界隈に居ます。

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

f:id:naohide_a:20151202195340j:plain

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

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

<span>hogehoge1</span>

abc

<span>hogehoge2</span>

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

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

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

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

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

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

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