2013-04-09 40 views
0

我想搜索并替换我的文件。正则表达式(搜索/替换/添加)VIM

例如:

[{"pk": 1, "model": "blog.post", "fields": {"text": "asdadasdasd", "genre": 8, 
"image": "image/test.jpg", "created_at": "2013-04-09T19:22:45Z", 
"updated_at": "2013-04-09T19:22:45Z", "help": 12, "reference": 12, 
"title": "Test1", "slug": "test-1"}}] 

荫需要搜索: “风格”:8和更换或添加: “流派”:[8]

Use: 
:g/"genre": \d/s//[&]/g 

但问题: “流派”:8 ] 有人知道怎么修这个东西吗?

谢谢。

回答

3

尝试以下方法:

:%s/\("genre": \)\(\d\d*\)/\1[\2]/g 

这使用捕获组,在更换\1是指基团\("genre": \),并在更换\2\(\d\d*\)。请注意,我将其从\d更改为\d\d*,以便它将匹配多个数字号码,否则类似"genre": 80将被替换为"genre": [8]0

+0

你好@ F.J感谢工作100%;)1+ – 2013-04-09 21:37:32

2

此行应该解决您的问题:

:%s/"genre": \zs\d\+\ze/[&]/g 

\zs and \ze是替换只匹配以下"genre":(one space)的数字。所以更换可以简单地使用&

:h \zs 
:h \ze 

查看详细

+0

是,我了解多一点了。谢谢你的帮助。对不起,我不能声望。 – 2013-04-09 21:47:12

+0

@SoyLatam你不需要任何声望。如果答案对您有帮助,您可以点击向上箭头(在“0”之上)来注册。或者如果它解决了您的问题,请通过单击打勾来接受它作为正确的答案。 – Kent 2013-04-09 21:59:55