我有以下JSON字符串:
{"FirstName":"John","LastName":"Smith"}
当我应用以下正则表达式时,它会正确返回键值对组:
(?<keyValuePair>(?<key>"\w+"):(?<value>".*?[^\\]"+?))+?
我得到了比赛:
1. "FirstName":"John"
1.1 key:"FirstName"
1.2 value:"John"
2. "LastName":"Smith"
2.1 key:"LastName"
2.2 value:"Smith"
现在,我希望有一个对象组,即查找所有对象..在相同的JSON字符串上,我应用以下正则表达式
(?<object>{(?<properties>.*?)})
我得到了比赛:
1. {"FirstName":"John","LastName":"Smith"}
1.1 object : {"FirstName":"John","LastName":"Smith"}
1.2 properties : "FirstName":"John","LastName":"Smith"
我想要的是将第一个正则表达式的goups作为第二个正则表达式中属性的子组。
所以预期的结果应该是:
1. {"FirstName":"John","LastName":"Smith"}
1.1 object : {"FirstName":"John","LastName":"Smith"}
1.2 properties : "FirstName":"John","LastName":"Smith"
1.2.1 "FirstName":"John"
1.2.1.1 key : "FirstName"
1.2.1.2 value : "John"
1.2.2 "LastName":"Smith"
1.2.2.1 key : "LastName"
1.2.2.2 value : "Smith"
有人可以帮我创建一个正则表达式来获得上面的结果。
这不会算作重复
到目前为止,我在过去的3个小时里尝试过很多东西,而且我的思绪在旋转。
答案 0 :(得分:2)
到目前为止,我在过去的3个小时里尝试过很多东西,而且我的想法是 纺丝。
不要嘲笑,根本不是,但是在3小时内你可以为JSON编写一个递归下降解析器,或者在大约30分钟内你可以安装JSON.NET,阅读文档/样本并转移到其他的东西。为什么不试试呢?使用正则表达式解析JSON没有前途,因为JSON是一种无上下文的语言,它是递归的,可能是无限长和嵌套的。正则表达式是DFA / NFA。它无法处理CFG。有点像Parsing HTML with Regex(好吧,我无法抗拒)
除非你有一个非常有限的JSON类型并且绝对反对添加第三方库,否则我不会打扰。把它归结为学习经验。