0

我有一个 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。

4

3 回答 3

1

试试这个:

{\s*"Id":"(\d+)"[^}]+"Status":"Waiting"\s*}
于 2012-08-10T07:08:41.870 回答
0

试试这个:

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

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

于 2012-08-10T07:13:50.870 回答
0

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

只要没有嵌套括号,这将起作用。

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

在 Regexr 上查看

你的表情

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

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

于 2012-08-10T07:14:45.217 回答