我有一个Latex文档,我希望将所有数学模式标记$ .. $
替换为相应的胶乳等效\( .. \)
。
我已经使用了这个正则表达式:%s/\$\(.\+\)\$/\\(\1\\)/gc
,但当然在一个简单的情况下我失败了,我在一行中有超过1个tagpair,即
This is an example: $ 1+2=3 $ and $4+5=9$
解决这个问题的简单方法是什么?我尝试在我的捕获组中使用一个集合,如下所示:\([^\$]\)
但这不匹配。
编辑:\([^\$]\)
不匹配的原因是因为我错过了添加量词,如下所示:\([^\$]\+\)
。这也是有效的,因为接受的答案下的评论显示。
答案 0 :(得分:5)
:%s/\$\(.\{-1,}\)\$/\\(\1\\)/gc
使用非贪婪量词.\{-1,}
代替贪心.\+
。
:help /\{
答案 1 :(得分:0)
我也会使用非贪婪的限定符,但更改条件以开始/结束数学环境:
:%s/\(\\\)\@<!\$\(.\{-1,}\)\(\\\)\@<!\$/\\(\2\\)/g
所以我会使用一些lookbehind来确保一个$在没有它的情况下离开它。