在
vimscript中,我们有替换函数,它将接受标志’g’来替换所有出现的事件.
有没有办法获得所有匹配字符串?
例如,使用字符串’x y z’,我们可以使用替换(‘x y z’,'[a-z]’,’abc’,’g’)将其更改为abc abc abc.
但是,有没有办法获得单个字符[‘x’,’y’,’z’]?
我知道我们可以使用match()来获取匹配的位置,并使用matchstr()来获取匹配的字符串.但是如果我想迭代所有的匹配,我必须调用我认为不是有效方式的两个函数.
那么在vimscript中获取字符串的所有匹配是否有效?
解决方法
您可以使用sub-replace-expression替换来捕获所有匹配项.
let str = 'a b c' let lst = [] call substitute(str,'[a-z]','\=add(lst,submatch(0))','g')
有关更多帮助请参阅:
:h sub-replace-expression :h substitute :h add() :h submatch()