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"

]

这是没有好处的。

我希望从最里面的阵列删除空格,从最初的JSON得到这样的:

{

a:[

{

c: ["c", "d"]

}

]

}

接受的答案也正是我最初问,但我忘了提数组元素之间也有空格,所以正则表达式替换似乎不是一个选项。

相反,我使用提供以匹配的字符串正则表达式,然后通过匹配环和除去从每个匹配的空白,则在用新的字符串JSON数据取代了初始匹配。

下面是代码:

var jsonData = JSON.stringify(obj, null, 2);

var matches = jsonData.match(/\[\s*[^\[\]]*?\s*\]/g);

jsonData = matches.reduce(function (json, match) {

return json.replace(match, match.replace(/\s/g, ""));

}, jsonData);

2015-04-06

KthProg

+1

匹配的正则表达式时的情况涉及到统计某种容器标记像括号或支架是很难的,而一般不是真的有可能。 “正则表达式无法计数”是我在自动机理论中学到的规则(很久以前,无可否认)。这是一个需要更强大类型的识别器/解析器的任务。 –

+0

@Pointy,上面的链接清楚地表明RegEx能够做到这一点。 –

+0

@PaulS。阅读我在顶部添加的评论,我必须解析JSON以获得漂亮的打印效果。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值