0

vimスクリプトで複数化機能を構築しようとしています

複数の単語を作成するために、この正規表現をphpスクリプトからコピーしました

/(?:([^f])fe|([lr])f)$/i   \1\2ves

ただし、これはvimでは機能しません

if "calf" =~ "\\v(?:([^f])fe|([lr])f)$"
  echo "matched"
end if 

エラーになるE64: ? follows nothing

この正規表現を完全には理解していないようですが、vim スクリプトで使用するにはどうすればよいですか?

4

1 に答える 1

2

Vim の正規表現の方言は、より一般的な POSIX 正規表現や Perl 互換の正規表現とは少し異なります。

サブマッチ?:をキャプチャせずにグループ化するために使用される which は、Vim で\%(...\)(または非常に魔法のモードで)表現さ\v%(...)れます。したがって、次を使用する必要があります。

if 'calf' =~ '\v%([^f])fe|([lr])f)$'

(バックスラッシュをエスケープしないように単一引用符に切り替えたことに注意してください。)

于 2013-09-05T06:36:58.667 に答える