Vimscript:在字符串上获取正则表达式的所有匹配项

前端之家收集整理的这篇文章主要介绍了Vimscript:在字符串上获取正则表达式的所有匹配项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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()

猜你在找的正则表达式相关文章