我有一个JSON文件,其中有一堆jpg引用,我试图用png替换。我希望匹配一个模式,其中有一个双位数和jpg之前的一段时间,捕获1,并在替换中使用它。问题是我只能找到未找到的模式。
"plith":"img/01.jpg"},{"block_ha....
替换代码如下所示
:%s/\(\d{2}\.\)+jpg/$1png/g
答案 0 :(得分:3)
我尝试了这个替换命令:
:%s/\v(\d{2}\.)jpg/\1png/g
它取代了这条线:
"plith":"img/01.jpg"},{"block_ha....
使用:
"plith":"img/01.png"},{"block_ha....
如果可以重复2位数字和以下点,您可以将+
量词应用于\d{2}\.
:
:%s/\v(\d{2}\.)+jpg/\1png/g
在原始命令中:
:%s/(\d{2}.)+jpg/$1png/g
似乎有3个问题:
您使用非转义括号来捕获数字,但默认情况下您需要转义它们。如果您不想,可以通过在模式中添加原子\v
来切换到非常神奇的模式。
你没有逃脱.
,这意味着它将匹配任何角色(换行除外),而不是文字点
在替换部分中,您使用$1
来引用第一个捕获组,但它应该是\1