首页 > 解决方案 > REGEX - 如何用包含在双引号中的单词本身替换冒号之前的单词

问题描述

我有一个像这样的“json”:

{
   example:"hi there",
   dateTime: "01/01/1970 bla:bla"
}

我应该替换冒号之前的所有值,将它们包含在双引号中。

在 ruby​​ 中引用此响应正则表达式以将单词括起来:用双引号,我尝试了代码,但还没有完全正确,因为它还更改了 dateTime 中冒号之前的值。

所以我应该添加到这段代码

(\w+)(?=:)

另一个控件,看看这个词是否就在逗号之后。

我想将“json”更改为真正的 json,如下所示:

  {
       "example":"hi there",
       "dateTime": "01/01/1970 bla:bla"
    }

而不是像现在这样:

{
   "example":"hi there",
   "dateTime": "01/01/1970 "bla":bla"
}

标签: regexreplace

解决方案


这是选择所有属性并替换的解决方案(查看演示):

对于所有大小写字母:

/(?:[a-z]+(?=:[" ]))/ig

对于字母数字和下划线:

/(?:[\w]+(?=:[" ]))/g

演示

https://www.regextester.com/?fam=107535

?:用于创建没有反向引用的组。因此,提高了计算速度,因为它不必记住要重用的组。


推荐阅读