我有一个无效的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。
答案 0 :(得分:2)
您可以使用以下内容进行匹配:
(?<!")VV[\w*]*?VV(?!")
并替换为以下内容:
"was-a-var"
请参阅RegEx DEMO
修改:对于javascript:
([^"])VV[\w*]*?VV(?!")
并替换为:
$1"was-a-var"
请参阅DEMO