在regex的帮助下制作有效的json字符串

时间:2015-09-22 11:53:07

标签: json regex

我有一个无效的json字符串,其中包含特定格式的变量。

变量以' VV'开头。然后键(只有字母数字,*和_字符)然后以' VV'结束。

在某些地方,这些变量是在无效的json字符串中定义的,可以在任何属性的内部值或内部数组中。

我必须将所有变量放在双引号内,如果它们还没有。这样json字符串就变成了有效字符串。

可以假设,如果所有这样的变量都被解析,则json变为有效变量。

我的沙箱是https://regex101.com/r/uE9vB2/6

我花了很多时间,但我找不到解决问题的方法。

PS:我无法解析数组实体。 编辑:不需要分组,因为我使用单独的分组结构。我只想用" was-a-var"替换那些变量。对象和数组都有。

输入:

{
  "arr1": [
    "key9",
    VVvariable1VV,
    "VVvariable2VV"
    "key6",
    "key7"
  ],
  "obj1": {
    "key1": "VVvaria*ble3VV",
    "key3": VVvariable4VV,
    "key7": "value7"
  },
  "obj2": {
    "key1": {
      "key1": "value-changed",
      "key5": "VVvari_able5VV",
      "key6": "value6",
      "key7": VV*VV
    },
    "key2": [
      "VVvariableVV",
      VV*VV
    ]
  },
  "key8" : "value",
  "key3": VVvariableVV,
  "key5": "VVvariableVV"
}

预期字符串:

{
  "arr1": [
    "key9",
    "was-a-var",
    "VVvariable2VV"
    "key6",
    "key7"
  ],
  "obj1": {
    "key1": "VVvaria*ble3VV",
    "key3": "was-a-var",
    "key7": "value7"
  },
  "obj2": {
    "key1": {
      "key1": "value-changed",
      "key5": "VVvari_able5VV",
      "key6": "value6",
      "key7": "was-a-var"
    },
    "key2": [
      "VVvariableVV",
      "was-a-var"
    ]
  },
  "key8" : "value",
  "key3": "was-a-var",
  "key5": "VVvariableVV"
}

编辑:仅限javascript regex。

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容进行匹配:

(?<!")VV[\w*]*?VV(?!")

并替换为以下内容:

"was-a-var"               

请参阅RegEx DEMO

修改:对于javascript:

([^"])VV[\w*]*?VV(?!")

并替换为:

$1"was-a-var"

请参阅DEMO