0

ここで直面している問題は、(JSON ペイロードの形式で) 構造化データを含むテキストの塊があり、特定の JSON インスタンスのキーの 1 つの値を抽出することに関心があることです。内部の構造化データは次のとおりです。

"アイテム 1": {"key1":"item1_key1_value", "key2":"item1_key2_value", "key3":"item1_key3_value"}, "アイテム 2": {"key1":"item2_key1_value", "key2":" item2_key2_value", "key3":"item2_key3_value"}

私が使用したいのは、たとえば、正規表現を使用して item1_key2_value を取得することです。キーはすべて同じ名前ですが、アイテムは異なります。したがって、必要なアイテムのキーはわかっていますが、その値を取得するための正規表現はよくわかりません。私はいくつかの基本的なマッチングにいくつかのアプローチを試みましたが、他のより経験豊富な正規表現ユーザーがここで私を少し指示し、私が間違っていることを説明できるかどうか疑問に思っていました.

1(. )(?=item1_key2_value. ) は、ここからのデータのチャンクと一致しますが、それを必要な値に減らす最善の方法がわかりません。

4

1 に答える 1

0

JSON の正規表現構文は、 http://www.json.orgで明確に指定されています。「A string is a sequence of」というところまで少し下にスクロールすると、適切な文字列構造が見つかります。

文字列が正しい JSON 構造に従っていると仮定すると、次を使用できます。

"key2"\s*:\s*"((\\.|[^\\"])*)"

where\sは空白を*意味し、0 回以上を意味します。 \\スロッシュ (バックスラッシュ) 文字を意味し、その後に.(任意の文字) を続けることができます。スロッシュが見つからない場合は、代わりに を探し[^\\"]ます。これは、スロッシュでも引用符でもないことを意味します。

正確な JSON 形式にもう少し厳密になりたい場合は、試すことができます

"key2"\s*:\s*"((\\["\\/bfnrtu]|[^\\"])*)"

これは、Web ページの文字列形式により厳密に従っていることがわかります。

于 2015-09-21T23:00:14.363 に答える