Java提取字符串/标签?

时间:2014-08-20 08:12:16

标签: java regex string

我有一组看起来像这样的字符串:

[{"tag":"rat","score":0.7973},{"tag":"lion","score":0.7184},{"tag":"dog","score":0.2396},{"tag":"woof","score":0.1944},{"tag":"cat","score":0.1157}]

我想从字符串中按顺序打印以下内容:

rat
lion
dog
woof
cat

我该怎么做?

5 个答案:

答案 0 :(得分:5)

正确使用任何JSON解析库,例如GSONJackson,并将其转换为Java Object。

注意:返回维护订单的java.util.LinkedHashMap

示例代码:

GSON

String jsonString="[{\"tag\":\"rat\",\"score\":0.7973},{\"tag\":\"lion\",\"score\":0.7184},{\"tag\":\"dog\",\"score\":0.2396},{\"tag\":\"woof\",\"score\":0.1944},{\"tag\":\"cat\",\"score\":0.1157}]";
Type type = new TypeToken<ArrayList<Map<String, String>>>() {}.getType();
ArrayList<Map<String, String>> data = new Gson().fromJson(jsonString, type);
for (Map<String, String> map : data) {
    System.out.println(map.get("tag"));
}

杰克逊

String jsonString="[{\"tag\":\"rat\",\"score\":0.7973},{\"tag\":\"lion\",\"score\":0.7184},{\"tag\":\"dog\",\"score\":0.2396},{\"tag\":\"woof\",\"score\":0.1944},{\"tag\":\"cat\",\"score\":0.1157}]";
TypeReference<ArrayList<Map<String, String>>> typeRef = new TypeReference<ArrayList<Map<String, String>>>() {};
ObjectMapper mapper = new ObjectMapper();
try {
    ArrayList<Map<String, String>> data = mapper.readValue(jsonString, typeRef);
    for (Map<String, String> map : data) {
        System.out.println(map.get("tag"));
    }
} catch (Exception e) {
    System.out.println("There might be some issue with the JSON string");
}

输出:

rat
lion
dog
woof
cat

答案 1 :(得分:3)

    (?:.*?{"tag":)"(.*?)",.*?}

这将匹配所有必需的组。参见演示

http://regex101.com/r/aN1bX5/1

答案 2 :(得分:3)

此字符串是JSON,因此您可以使用JSON解析器来执行此操作。

如果您正在寻找一种简单的方法来获取"tag"的所有值,请使用此正则表达式并在Java中提取第1组。

"tag":"((?:[^"\\]|\\.)*)"

Regular expression visualization

Debuggex Demo

如果您要在Java中使用它,请双击它:

Pattern p = Pattern.compile("\"tag\":\"((?:[^\"\\\\]|\\\\.)*)\"");

答案 3 :(得分:0)

试试这个。匹配位于第一个捕获组

(?:"tag":"|\G(?!^))([^"]*)

答案 4 :(得分:0)

不要使用正则表达式来解析JSON。使用像GSON或Jackson这样的库

JSONArray jsa = new JSONArray(jsonString);
for (int i = 0; i < jsa.length(); i++) {
    JSONObject json = jsa.getJSONObject(i);
    System.out.println(json.getString("tag"));
}