匹配可能看起来像JSON

时间:2016-08-30 07:59:55

标签: php regex

我有expression parser并且我想添加json支持,因此我需要匹配[{中的任意一个字符,其中可能包含配对[]和{ {1}}然后{}]

到目前为止,我}匹配([[{])(.(?!\1))*[\]}]但我可以忍受。当json_decode返回null时,将捕获无效的json。

我需要在这样的字符串中匹配JSON:

[foo}

但这些字符串中还有第一个JSON:

{"foo":"bar"} == 20
[1,2,3,4] == 10

到目前为止,我有这样的正则表达式{"foo": "bar"}["foo"] [1,[2],{"foo":"bar"},4][0] {"foo": "bar"} == {"foo": "bar"} demo但它不匹配: ^([\[{](?>"(?:[^"]|\\")*"|[^\]}]|(?1))*[\]}])

1 个答案:

答案 0 :(得分:0)

这是我在此答案Extract s-expressions from a beginning of the string中根据评论的S-Expression正则表达式找到的匹配正则表达式:

^([\[{](?>"(?:[^"]|\\")*"|[^[{\]}]|(?1))*[\]}])

https://regex101.com/r/cUkoVe/2