Regex 用于解析JSON对象的正则表达式

Regex 用于解析JSON对象的正则表达式,regex,Regex,我有一个Json文件,其中包含如下文本: { title1: { x: "abc", y: "def" } , title2:{ x: "{{abc}}", y: "{{def}}" }, } 我想先拿到书名1书名2,。。。组。然后,对于每组,我想得到x:…,y:。。。部分。我试着分两步来做。对于第一步,我使用了以下regexp: [\s\S]*:\s*{(((?!}\s*,)[\s\S])*)

我有一个Json文件,其中包含如下文本:

{
    title1: {
        x: "abc",
        y: "def"
    } ,

    title2:{
        x: "{{abc}}",
        y: "{{def}}"
    },
}
我想先拿到书名1书名2,。。。组。然后,对于每组,我想得到x:…,y:。。。部分。我试着分两步来做。对于第一步,我使用了以下regexp:

[\s\S]*:\s*{(((?!}\s*,)[\s\S])*)

我想说的是find
后跟可选空格,然后是
{
。然后继续,直到看到
}
后跟可选空格和
。但它发现整个文本是匹配的,而不是单独的标题1和标题2部分。怎么了

也许,这个表达式

(\S+):\s*{\s*(((\S+):\s*"{*([^"{}]*)}*"\s*,?\s*)+)}
或:

使用有界量词可能更接近您的想法


如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况



编写自己的JSON解析器可能更容易。或者更容易使用现有的。您尝试使用正则表达式有什么特别的原因吗?几条简短的注释。首先,问题中的文本不是JSON。第二,假设您得到了JSON,您不能用正则表达式解析JSON(由于任意嵌套的结构),因此您应该使用您的语言内置的JSON解析器。所有主要语言都有。干杯。我如何才能使这一个作为一个完整的匹配:标题1:{x:“abc”,y:“def”},有没有一种方法可以使用,但把x:“abc”,y:“def”作为一个组?如果你能在原始答案中发布它,我愿意接受你的最后一个解决方案。
(\S+):\s*{\s*(((\S+):\s*"{{0,2}([^"{}]*)}{0,2}"\s*,?\s*)+)}