常用表达

时间:2012-08-10 06:38:44

标签: regex json jmeter

我有一个JSON响应,我想用包含像

这样的对象数组的正则表达式进行解析
...
{
 "Id":"01",
 "Subject":"Sub",
 ....
 "Status":"Completed"
 ...
},
{
 "Id":"02",
 "Subject":"Sub",
 ....
 "Status":"Waiting"
 ...
}

我希望得到状态等待的对象的id。

当我用"Id": "(.+?)",[\s\S]+?"Subject": "Sub",[\s\S]+?"Status": "Waiting";解析时,它从“等待”到第一个“Id”(向后)匹配;当然,我想要等待的对象的Id。

任何帮助?

3 个答案:

答案 0 :(得分:1)

试试这个:

{\s*"Id":"(\d+)"[^}]+"Status":"Waiting"\s*}

答案 1 :(得分:0)

试试这个:

(?s)"Id":\s*"([^"]+)[^}]*?"Status":\s*"Waiting"

如果属性Id和状态之间没有嵌套{},它将起作用。

答案 2 :(得分:0)

如果您可以使用Json Parser,请使用它。

只要没有嵌套括号,这将有效。

{[^{}]*Id":"(\d+)[^{}]*\s"Status":"Waiting"

here on Regexr

你的表达

"Id": "(.+?)",[\s\S]+?"Subject": "Sub",[\s\S]+?"Status": "Waiting"
                                       ^^^^^^^^
                                       fails here

该部分与第一个"Sub",中的任何内容匹配,直到找到第一个"Status": "Waiting"

相关问题