Vimの正規表現では常に\vを使うことにする
:echo match('aaa', 'a*') => 0 (マッチする) :echo match('aaa', 'a+') => -1 (マッチしない)
このような結果になるのは、*はエスケープが不要だが、+はエスケープが必要なため。
:echo match('aaa', 'a\+') => 0
とすればマッチする。
エスケープが必要なのか不要なのか、メタキャラクタによってまちまちで分かりにくい。
また、magicというオプションによっても、挙動が変わる。
このややこしさは、\vというメタキャラクタを使うと解決できる。
:echo match('aaa', '\va+') => 0
このように正規表現の最初に\vを付加すると、あらゆるメタキャラクタがエスケープ無しで効果を発揮するようになる。
詳細は以下のヘルプで参照
:help magic