php正则匹配json数组,正则表达式只匹配JSON字符串中最⾥
⾯的数组
⾸先,这是关于以友好的格式向⽤户显⽰JSON,所以访问解析的JSON对象的不会帮助。正则表达式只匹配JSON字符串中最⾥⾯的数组我知道JS中的JSON对象可以漂亮地打印JSON对我来说,但是,我需要稍微修改该输出,这就是这个问题的含义。
在JSON(由JSON.stringify()漂亮的印刷):
{
a:[
{
c: [
"c",
"d"
]
}
]
}
我怎么会只匹配 [ "c", "d" ]?
懒惰正则表达式(/\[(?:\S*\s*)+?\]/g)匹配
a: [
{
c: [
"c",
"d"
]
phpjson格式化输出
这是没有好处的。
我希望从最⾥⾯的阵列删除空格,从最初的JSON得到这样的:
{
a:[
{
c: ["c", "d"]
}
]
}
接受的答案也正是我最初问,但我忘了提数组元素之间也有空格,所以正则表达式替换似乎不是⼀个选项。
相反,我使⽤提供以匹配的字符串正则表达式,然后通过匹配环和除去从每个匹配的空⽩,则在⽤新的字符串JSON数据取代了初始匹配。
下⾯是代码:
var jsonData = JSON.stringify(obj, null, 2);
var matches = jsonData.match(/\[\s*[^\[\]]*?\s*\]/g);
jsonData = duce(function (json, match) {
place(match, place(/\s/g, ""));
}, jsonData);
2015-04-06
KthProg
+1
匹配的正则表达式时的情况涉及到统计某种容器标记像括号或⽀架是很难的,⽽⼀般不是真的有可能。 “正则表达式⽆法计数”是我在⾃动机理论中学到的规则(很久以前,⽆可否认)。这是⼀个需要更强⼤类型的识别器/解析器的任务。 –
+0
@Pointy,上⾯的链接清楚地表明RegEx能够做到这⼀点。 –
+0
@PaulS。阅读我在顶部添加的评论,我必须解析JSON以获得漂亮的打印效果。 –