正则表达式匹配文档中的JSON

时间:2014-11-13 13:49:02

标签: regex json

我需要在文档中找到所有JSON字符串。

  • 我可以假设所有以{开头的字符串都是JSON。
  • 我可以假设JSON可能无效。

1 个答案:

答案 0 :(得分:2)

这是一个正则表达式解决方案:

{
    (?>
        "(?>\\.|[^"])*"|
        [^{}"]+|
        (?R)
    )*
}

这将捕获可以具有无限嵌套的JSON结构,例如

{
    "foo": "bar",
    "foo": false,
    "foo": 123,
    {
        "foo": "bar"
    },
    "foo": "}}}"
}

如果您有自己的测试用例或者需要对表达式进行解释,我已经设置了regex101 playground

不幸的是,JavaScript does not provide the PCRE recursive parameter (?R)XRegExp是一个开源JavaScript库,提供增强的常规表达式,包括对递归匹配的支持。