尝试使用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脚本?
答案 0 :(得分:2)
Vim的正则表达式方言与更常见的POSIX正则表达式和Perl兼容的正则表达式略有不同。
用于分组而不捕获子匹配的?:
在Vim中表示为\%(...\)
(或非常神奇的模式中的\v%(...)
。因此,您必须使用:
if 'calf' =~ '\v%([^f])fe|([lr])f)$'
(注意我是如何切换到单引号以避免转义反斜杠的。)