[英]Is it possible to replace a value in a json string that occurs multiple times only at the top level of the structure via regex?
嗨,
我有一个具有以下结构的 json 字符串:
{
"version": "1.0.0",
"dependencies": {
"version": "1.0.0"
}
}
它也可以是这样的:
{
"dependencies": {
"version": "1.0.0"
},
"version": "1.0.0"
}
或者像这样:
{ "version": "1.0.0", "dependencies": { "version": "1.0.0" } }
或者像这样:
{ "dependencies": { "version": "1.0.0" }, "version": "1.0.0" }
可以看出,该字符串包含 2 次名称“version”和值“1.0.0”。 一次在 json 结构的“顶层”,一次更深一层。
现在我想用另一个值替换值“1.0.0”,但只是顶级值,我试图为此定义一个正则表达式。 但到目前为止失败了。
我开始怀疑是否有可能定义这样的表达式。 潜在的问题似乎是名称的第一次命中不一定是顶级键(参见示例 2 和 4)。
如果有人能帮助我,那就太好了::)
根据您的 Java 版本(这是您使用的标签),这可能不起作用,因为它需要使用非固定宽度的前瞻和后视,但此正则表达式应该可用于 Java 或 JavaScript 的更高版本。
(?:(?<!(?:[\s\S]*\{[\s\S]*){2,})(?<="version" *: *")([\d\.]*)(?=")|(?<="version" *: *")([\d\.]*)(?=")(?!(?:[\s\S]*\}[\s\S]*){2,}))
大家可以自己测试看看效果如何,链接如下: https://regex101.com/r/6Q3KXQ/1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.