正则表达式从json响应中捕获所有不同类型的属性值

时间:2017-01-12 08:12:10

标签: regex

以下是我正在创建正则表达式以使用其值捕获所有属性的响应。

"attributes": {
                "created_time": "2014-09-12",
                "currency": "INR",
                "budget": 381000,
                "price": 12345.50,
                "name": "Untitled",
                "start_time": null,
                "updated_time": "2014-09-12",
                "type": ["ads","share"],
                "type1": [{"ads1","share1"}]
                "tracking_specs": [
                   {
                     "creative": [
                       "682"
                     ],
                     "type": [
                        "dwell"
                     ]
                   }
               }

我希望属性和它们的值分别如下: created_time和2014-09-12分开。因此,使用属性名称,我可以创建查询,然后从数据库中获取数据并与属性值匹配。

我创建的正则表达式是"([^"]+)"*: ("([^"]+)"|([^"]+).00|([^"]+),),但似乎不正确。 谢谢!

1 个答案:

答案 0 :(得分:0)

以下正则表达式将捕获JSON响应中的所有内容:

"[a-zA-Z_]+": (?:(?:"[a-zA-Z0-9-]+")|(?:[a-zA-Z0-9.[",\]]+))

如果在外括号中删除?:那么你有两个捕获组,如下所示:"[a-zA-Z_]+": ((?:"[a-zA-Z0-9-]+")|(?:[a-zA-Z0-9.[",\]]+))这样你就可以选择(取决于你使用的语言)这些属性与值。

我不确定您为什么要使用带有JSON响应的正则表达式,因为任何依赖于响应的代码都必须已经知道响应中的所有可能字段。但是,我甚至都不知道你想要完成的是什么。如果你在为某些事情编写正则表达式时遇到困难,那么让它运行起来的一种快速方法就是使用许多在线正则表达式测试程序中的一个,例如: this one