加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:04:27 所属栏目:百科 来源:网络整理
导读:在 vimscript中,我们有替换函数,它将接受标志’g’来替换所有出现的事件. 有没有办法获得所有匹配字符串? 例如,使用字符串’x y z’,我们可以使用替换(‘x y z’,'[a-z]’,’abc’,’g’)将其更改为abc abc abc. 但是,有没有办法获得单个字符[‘x’,’y’,
在 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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读