PHP正则表达式带enters的负前瞻

PHP正则表达式带enters的负前瞻,php,regex,json,Php,Regex,Json,我试图刮取一个.JSON文件,但是返回的文件在1.JSON文件中返回多个JSON对象,导致JSON文件无效。我试图通过在JSON文件之前添加一个[a],在JSON文件之后添加一个]来解决这个问题。然后使用正则表达式在正确的位置添加逗号 这是正则表达式之前的文件 [{"status":"success"} {"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":

我试图刮取一个.JSON文件,但是返回的文件在1.JSON文件中返回多个JSON对象,导致JSON文件无效。我试图通过在JSON文件之前添加一个[a],在JSON文件之后添加一个]来解决这个问题。然后使用正则表达式在正确的位置添加逗号

这是正则表达式之前的文件

[{"status":"success"}

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

]
我创建了以下正则表达式:
}(?!\s,|\s])
。 我遇到的问题是,它仍然在最后一个}之后添加a,尽管后面跟着a]

我得到的是:

[{"status":"success"},

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

]
预期结果:

[{"status":"success"},

{"values":{"cpu":26.5152886753948387,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"},

{"values":{"cpu":25.5839236550189568,"ram":0.8452846061135513},"origin":"core","type":-1,"uuid":"0000-e8-de-27-176d10"}

]

将正则表达式中的
\s
替换为
\s*
,因为
\s
将匹配单个空格字符,而
\s*
将匹配零个或多个空格字符

}(?!\s*[,\]])


谢谢,那正是我要找的地方!
$re = "/}(?!\\s*[,\\]])/m";
$str = "[{\"status\":\"success\"}\n\n{\"values\":{\"cpu\":26.5152886753948387,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n{\"values\":{\"cpu\":25.5839236550189568,\"ram\":0.8452846061135513},\"origin\":\"core\",\"type\":-1,\"uuid\":\"0000-e8-de-27-176d10\"}\n\n]";
$subst = "},";
$result = preg_replace($re, $subst, $str);