VIM 正则表达式 - 尝试修复 JSON 文件,其中 属性 名称未被引用
VIM regex - Attempting to fix a JSON file in which the property names aren't quoted
基本上,我想在所有 属性 个名称前后添加引号。
propertyName: {
anotherProperty: "ksdfjslkdfjklsjf",
someOtherProperty: "aklsjdfljsfdkj"
}
我尝试了以下不同的变体,但都无济于事:
:%s/A-Za-z:/"A-Zaz-z"
如有任何帮助,我们将不胜感激。另外,我想更精通正则表达式。解决此问题的最佳方法是什么?
尝试使用捕获:
%s/\([A-Za-z]\+\)\ze:/""/g
结果将是:
"propertyName": {
"anotherProperty": "ksdfjslkdfjklsjf",
"someOtherProperty": "aklsjdfljsfdkj"
}
\(regex\)
是一个捕获组。内部匹配的所有内容都可以通过 \n
重复使用。其中 n
是组索引。在我的示例中,我只有一个捕获组,所以我稍后使用 </code>。</p>
<p><code>\ze
- 表示比赛结束,这样我保留了冒号 :
.
更新
实际上@lcd047 解决方案更好更短。 \w
更适合 属性 名称,因为它们可能包含数字和下划线:
%s/\w\+\ze:/"&"/
\w
等于使用 [0-9A-Za-z_]
基本上,我想在所有 属性 个名称前后添加引号。
propertyName: {
anotherProperty: "ksdfjslkdfjklsjf",
someOtherProperty: "aklsjdfljsfdkj"
}
我尝试了以下不同的变体,但都无济于事:
:%s/A-Za-z:/"A-Zaz-z"
如有任何帮助,我们将不胜感激。另外,我想更精通正则表达式。解决此问题的最佳方法是什么?
尝试使用捕获:
%s/\([A-Za-z]\+\)\ze:/""/g
结果将是:
"propertyName": {
"anotherProperty": "ksdfjslkdfjklsjf",
"someOtherProperty": "aklsjdfljsfdkj"
}
\(regex\)
是一个捕获组。内部匹配的所有内容都可以通过 \n
重复使用。其中 n
是组索引。在我的示例中,我只有一个捕获组,所以我稍后使用 </code>。</p>
<p><code>\ze
- 表示比赛结束,这样我保留了冒号 :
.
更新
实际上@lcd047 解决方案更好更短。 \w
更适合 属性 名称,因为它们可能包含数字和下划线:
%s/\w\+\ze:/"&"/
\w
等于使用 [0-9A-Za-z_]