正则表达式(搜索/替换/添加)VIM

时间:2013-04-09 21:32:01

标签: regex search 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"}}]

我需要搜索:“genre”:8并替换或添加:“genre”:[8]

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

但问题:[“类型”:8]任何人都知道如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:3)

尝试以下方法:

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

这使用捕获组,替换中的\1指的是组\("genre": \),替换中的\2指的是\(\d\d*\)。请注意,我将其从\d更改为\d\d*,以便它也匹配多个数字,否则"genre": 80之类的内容将被"genre": [8]0替换。

答案 1 :(得分:2)

此行应解决您的问题:

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

\zs and \ze使替换仅匹配"genre":(one space)后面的数字。因此替换只需使用&

:h \zs
:h \ze

了解详情