gpt4 book ai didi

vim,如何从正则表达式中获取括号中的匹配单词

转载 作者:行者123 更新时间:2023-12-03 01:04:47 25 4
gpt4 key购买 nike

使用 vim 脚本,

假设我想从以下表达式中查找单词“This”

match("testingThis", '\ving(.*)')

我尝试了一些不同的选项,getmatches()substitute(),但还不走运:(

有没有办法像在 ruby​​ 或 php 中一样在 vim 中获取匹配项,即 matches[1]

--------------------------编辑-------------------- --------

h function-list,正如glts提到的,我找到了matchlist()与始终返回完整匹配的 matchstr() 不同,如 matches[0],它返回完整的匹配数组。

echo matchstr("foo bar foo", '\vfoo (.*) foo')  " return foo bar foo
echo matchlist("foo bar foo", '\vfoo (.*) foo') " returns ['foo bar foo', 'bar', '', '', '', '', '', '', '', '']

最佳答案

在这种特殊情况下,您可以使用 matchstr() (它返回匹配本身,而不是开始位置),并让匹配在 before 之后开始 -使用 \zs 进行断言:

matchstr("testingThis", '\ving\zs(.*)')

在一般情况下,有 matchlist(),它返回整个匹配以及所有捕获组的列表。结果位于第一个捕获组中,因此索引为 1 的元素:

matchlist("testingThis", '\ving(.*)')[1]

关于vim,如何从正则表达式中获取括号中的匹配单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com