私はアンドロイドスタジオで正規表現を使用する方法を理解しようとしています。私はJsonの応答文字列からいくつかのキャッチグループを取得しようとしています。私はおそらくjsonオブジェクトを通常の方法で解析する必要があることを知っていますが、私のrgexが機能していない理由を理解したいと思います。正規表現を使用すると一致しないのはなぜですか?
私はオンライン正規表現チェッカーにJSON文字列をペーストしようとしていると私は同じようなものを使用して、私がしたいすべてのcatchgroupsを取得することができています:
topLeftX.+\s(\d+)|topLeftY.+\s(\d+)
しかし、それは私のようにアンドロイドのスタジオで私のために動作しません。一致するものはありません。
これは私がしようとしたテストです:
のでJSONObject json_raw = null;
try {
json_raw = new JSONObject("{\n" +
" \"images\": [\n" +
" {\n" +
" \"status\": \"Complete\",\n" +
" \"width\": 1536,\n" +
" \"height\": 2048,\n" +
" \"file\": \"kairos-elizabeth.jpg\",\n" +
" \"faces\": [\n" +
" {\n" +
" \"topLeftX\": 390,\n" +
" \"topLeftY\": 706,\n" +
" \"chinTipX\": 780,\n" +
" \"rightEyeCenterX\": 587,\n" +
" \"yaw\": -3,\n" +
" \"chinTipY\": 1548,\n" +
" \"confidence\": 0.99997,\n" +
" \"height\": 780,\n" +
" \"rightEyeCenterY\": 904,\n" +
" \"width\": 781,\n" +
" \"leftEyeCenterY\": 907,\n" +
" \"leftEyeCenterX\": 955,\n" +
" \"pitch\": -17,\n" +
" \"attributes\": {\n" +
" \"lips\": \"Together\",\n" +
" \"asian\": 0.25658,\n" +
" \"gender\": {\n" +
" \"type\": \"F\"\n" +
" },\n" +
" \"age\": 26,\n" +
" \"hispanic\": 0.41825,\n" +
" \"other\": 0.11144,\n" +
" \"black\": 0.16007,\n" +
" \"white\": 0.05365,\n" +
" \"glasses\": \"None\"\n" +
" },\n" +
" \"face_id\": 1,\n" +
" \"quality\": 0.79333,\n" +
" \"roll\": -1\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}");
} catch (JSONException e) {
e.printStackTrace();
}
Pattern pattern = Pattern.compile("topLeftX.+\\s(\\d+)");
Matcher matcher = pattern.matcher(json_raw.toString());
有効なJSON文字列があります。データを取得する必要があります。より良い結果を得るためのJSONメソッド... – ariefbayu
matcher 'Matcher'オブジェクトを作成しますが、それを使用していないようですか?あなたの場合、 'matcher.matches()'ではなく 'matcher.find()'をしたいとします。 –
AndroidのJSONメソッドを使用してJSON文字列を処理する方法をスニペットで説明しました。それを見て、さらにいくつかのJSON処理を学んでください... – ariefbayu