我有一个 vimscript,它从 vim 命令行传递的字符串中获取匹配列表。字符串的一部分具有类似 的模式some-word
。以下输出总结了问题:
echo matchlist("some-word", escape('(\w|-)+', '()+|'))
" => ['some-word', 'd', '', '', '', '', '', '', '', '']
我知道这'd'
是由于捕获组。我尝试使用[\w|-]
,但这不起作用。我发现避免这种情况的一种方法是使用非捕获组\%(\w|-)
,但似乎添加更多代码。vim 没有像[]
perl 那样的解决方案吗?