我有一个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。
任何帮助?
答案 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"
你的表达
"Id": "(.+?)",[\s\S]+?"Subject": "Sub",[\s\S]+?"Status": "Waiting"
^^^^^^^^
fails here
该部分与第一个"Sub",
中的任何内容匹配,直到找到第一个"Status": "Waiting"