Regex 如何转到Vim搜索模式的最后一个匹配
在一行中,Vim如何仅匹配搜索模式的最后一次出现?有点像不贪婪,但从一开始 e、 g.在下一行中,我想匹配Regex 如何转到Vim搜索模式的最后一个匹配,regex,vim,Regex,Vim,在一行中,Vim如何仅匹配搜索模式的最后一次出现?有点像不贪婪,但从一开始 e、 g.在下一行中,我想匹配闪烁小星星(以粗体突出显示): 闪烁一闪一闪一闪一闪一闪一闪一闪的小星星 我尝试了如下所示的负前瞻,但它与整行匹配: Twinkle.*\(Twinkle\)\@!$ 转义括号并在锚之前添加通配符匹配: Twinkle\(.*Twinkle\)\@!.*$ ^ ^ ^^ “*”贪婪地匹配所有内容,在匹配失败时回溯较少的内容(可能什么都没有) “\z
闪烁小星星
(以粗体突出显示):
闪烁一闪一闪一闪一闪一闪一闪一闪的小星星
我尝试了如下所示的负前瞻,但它与整行匹配:
Twinkle.*\(Twinkle\)\@!$
转义括号并在锚之前添加通配符匹配:
Twinkle\(.*Twinkle\)\@!.*$
^ ^ ^^
- “*”贪婪地匹配所有内容,在匹配失败时回溯较少的内容(可能什么都没有)
- “\zs”设置“匹配开始”,用于替换和光标放置
- 剩下的就是你想要匹配的
Twinkle brightly little star
Twinkle brightly, Twinkle brightly little star
和替代:
:%s/\v.*\zsTwinkle /&extra /
给出:
Twinkle extra brightly little star
Twinkle brightly, Twinkle extra brightly little star
所以要搜索从闪烁的最后一次出现到行尾之间的所有内容吗?从您提供的示例很难判断。是的,我想匹配从闪烁的最后一次出现到行的末尾。阿公87给出了正确的答案。谢谢不,那也不行。Vim仍然匹配整行。哎呀,把第一个通配符字符串放在括号内。已编辑。较短的版本:
/\v(闪烁)(.*\1@*代码>
Twinkle extra brightly little star
Twinkle brightly, Twinkle extra brightly little star