/ / wyrażenia regularne - regex, json, jmeter

wyrażenia regularne - regex, json, jmeter

Mam odpowiedź JSON, którą chcę analizować za pomocą wyrażeń regularnych zawierających tablicę obiektów takich jak

...
{
"Id":"01",
"Subject":"Sub",
....
"Status":"Completed"
...
},
{
"Id":"02",
"Subject":"Sub",
....
"Status":"Waiting"
...
}

i chcę uzyskać identyfikator obiektu, który oczekuje na status.

Kiedy analizuję "Id": "(.+?)",[sS]+?"Subject": "Sub",[sS]+?"Status": "Waiting"; pasuje od „Waiting” do pierwszego „Id” (wstecz); na pewno chcę Id obiektu, który czeka.

Jakaś pomoc?

Odpowiedzi:

1 dla odpowiedzi № 1

Spróbuj tego:

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

0 dla odpowiedzi nr 2

Spróbuj tego:

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

Będzie działać, jeśli nie ma zagnieżdżonego {} między właściwościami Id i Status.


0 dla odpowiedzi № 3

Jeśli możesz użyć parsera Json, użyj tego.

Działa to tak długo, jak długo nie ma zagnieżdżonych nawiasów.

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

Zobacz to tutaj na Regexr

Twoja ekspresja

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

Ta część pasuje do wszystkiego od pierwszego "Sub", dopóki nie znajdzie pierwszego "Status": "Waiting"