对 vim 正则表达式中的 `\?` 很困惑

Bla*_*ght 2 regex vim

我一直在尝试在vim中进行简单的替换,并发现vim中的 不能与或 一起\?使用,也就是说,在vim中:*+(NFA regexp) Can't have a multi follow a multi

i want it to stop here, not here
~
~
~
[NORMAL] ...
:%s/^\(.*\?\)here//
Run Code Online (Sandbox Code Playgroud)

如果我删除\?它,它可以工作,但它的正则表达式最多匹配 2nd here

但使用普通的正则表达式它可以工作:https ://regex101.com/r/iHdxxl/1

为什么不能\?与vim 一起使用*\+在 vim 中使用?

Yor*_*ric 5

正如那里所述,你不能?在 vim 中的星号后面添加字符。为了使搜索不贪婪,您需要使用.\{-}而不是.*

:%s/\(.\{-}\)here//
Run Code Online (Sandbox Code Playgroud)