为什么我的正则表达式代码不能获得字符串的这一部分?

时间:2016-02-26 00:25:00

标签: android json regex google-places-api

我正在制作一个应用程序,向用户显示最近的健身房。在我向Google Places Api提出请求后,它会返回一些json。我使用正则表达式从json获得了纬度。但是,我无法得到经度。我的代码如下。有人可以帮忙吗?

 for (int i = 0; i < jsonArray.length(); i++){

                String latitude = "\"lat\":";
                String longitude = "lng\":";
                Pattern p = Pattern.compile(latitude +"(.*?),");
                Pattern pattern = Pattern.compile(longitude + "(.*?)"+ ",");

                JSONObject jsonPart = jsonArray.getJSONObject(i);



                String latLong = jsonPart.getString("geometry");
               Matcher m = p.matcher(jsonPart.getString("geometry"));
                Matcher matcher = pattern.matcher(jsonPart.getString("geometry"));
               while( matcher.find()) {
                   Log.i("longitude", matcher.group(1));

               }
                while (m.find()){

                    Log.i("latitude", m.group(1));
                }






            }

这是我需要获得纬度和经度的线。我可以获得纬度,但经度不起作用。

gymlocation: {"location":{"lat":40.4434584,"lng":-79.964227}}

2 个答案:

答案 0 :(得分:2)

String longitude = "\"lng\":";

您缺少\"

或者,这不是更好吗?

Geting json response from Google places API in android

答案 1 :(得分:0)

如果您仍想使用正则表达式,则由于"lng"(.*?),惰性运算符,您的第二个表达式?找不到任何内容。它将尝试尽可能匹配至少字符,并且因为您正在搜索的字符串没有,但是您的表达式尝试在最后匹配一个,它将不匹配任何内容。