Mám odpoveď JSON, ktorú chcem analyzovať regulárnymi výrazmi, ktoré obsahujú pole objektov
...
{
"Id":"01",
"Subject":"Sub",
....
"Status":"Completed"
...
},
{
"Id":"02",
"Subject":"Sub",
....
"Status":"Waiting"
...
}
a chcem dostať id objektu, ktorý čaká na stav.
Keď s tým rozoberiem "Id": "(.+?)",[sS]+?"Subject": "Sub",[sS]+?"Status": "Waiting";
zhoduje sa z "Čakania" na prvé "Id" (dozadu); určite chcem Id objektu, ktorý čaká.
Nejaká pomoc?
odpovede:
1 pre odpoveď č. 1Skúste to:
{s*"Id":"(d+)"[^}]+"Status":"Waiting"s*}
0 pre odpoveď č. 2
Vyskúšaj tento:
(?s)"Id":s*"([^"]+)[^}]*?"Status":s*"Waiting"
Bude fungovať, ak nie je vnorené {} medzi vlastnosťami Id a Status.
0 pre odpoveď č. 3
Ak môžete použiť Json Parser, použite ho.
Toto bude fungovať tak dlho, kým nie sú vnorené zátvorky.
{[^{}]*Id":"(d+)[^{}]*s"Status":"Waiting"
Pozrite sa na to tu na Regexr
Váš výraz
"Id": "(.+?)",[sS]+?"Subject": "Sub",[sS]+?"Status": "Waiting"
^^^^^^^^
fails here
Tá časť zodpovedá všetkému od prvého "Sub",
kým nenájde prvú "Status": "Waiting"