Vim:在捕获组中使用集合(或:用不同的标签替换标签)

ran*_*ror 1 regex vim

我有一个Latex文档,我希望$ .. $用适当的乳胶等效替换所有mathmode标签\( .. \).

我已经使用了这个正则表达式:%s/\$\(.\+\)\$/\\(\1\\)/gc但是当然这很简单,我在一行中有超过1个tagpair,即

This is an example: $ 1+2=3 $ and $4+5=9$
Run Code Online (Sandbox Code Playgroud)

什么是解决这个问题的简单方法?我尝试在我的捕获组中使用这样的集合:\([^\$]\)但这不匹配.

编辑:原因\([^\$]\)不匹配是因为我错过了添加量词如下:\([^\$]\+\).这也将起作用,因为接受的答案下的评论显示.

Ama*_*dan 5

:%s/\$\(.\{-1,}\)\$/\\(\1\\)/gc
Run Code Online (Sandbox Code Playgroud)

使用非贪婪量词.\{-1,}而不是贪心.\+.

:help /\{