在 vimscript 中,我们有 substitute
将接受标志的函数 'g'
替换所有出现的情况。
有没有办法获得所有匹配的字符串?
例如,使用字符串 'x y z'
,我们可以使用 substitute('x y z', '[a-z]', 'abc', 'g')
将其更改为 abc abc abc
.
但是,有没有办法获得单个字符['x', 'y', 'z']
?
我知道我们可以使用 match()
获取匹配的位置,以及 matchstr()
获取匹配的字符串。但是如果我想遍历所有匹配项,我必须调用这两个函数,我认为这不是有效的方法。
那么有没有什么有效的方法可以在 vimscript 中获取字符串的所有匹配项?
最佳答案
您可以使用带有子替换表达式的替换来捕获所有匹配项。
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()
关于regex - Vimscript : get all matches of a regex over a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056600/