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_]