我有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))*[\]}])
答案 0 :(得分:0)
这是我在此答案Extract s-expressions from a beginning of the string中根据评论的S-Expression正则表达式找到的匹配正则表达式:
^([\[{](?>"(?:[^"]|\\")*"|[^[{\]}]|(?1))*[\]}])