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

Jsonパーサーが使えるならそちらを使ってください。

これは、ネストされたブラケットがない限り機能します。

{[^{}]*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 に答える
0

これを試してください:

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

プロパティ Id と Status の間にネストされた { } がない場合に機能します。

于 2012-08-10T07:13:50.870 に答える