如何编写正则表达式从字符串中提取模式

时间:2013-08-23 01:17:40

标签: java regex json

我有一个JSON字符串,我想提取我需要关注的信息。我想要的是从JSON字符串中提取键“name”的值,可能有多个“name”条目。

例如JSON字符串是:

{"key1":"value1","key2":"value2","key3":"value3","name":"allen","detail":{"detailkey1":"detailvalue2","name":"john","detailkey2":"detailvalue2"}}

我需要从这个JSON字符串中提取'allen'和'john'。

我对正则表达式并不熟悉,希望有人可以提供帮助。

如果您可以在java中提供示例代码,那就太棒了。

由于

更新:感谢大家的回复,我自己尝试过,实际上非常简单。复制我的代码

final String mydata = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\",\"name\":\"allen\",\"detail\":{\"detailkey1\":\"detailvalue2\",\"name\":\"john\",\"detailkey2\":\"detailvalue2\"}}";

    final Pattern pattern = Pattern.compile("\"name\":\"(.*?)\"");
    final Matcher matcher = pattern.matcher(mydata);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

1 个答案:

答案 0 :(得分:6)

我建议使用任何JSON解析器解析它。以下是使用Java org.json解析器的方法。

JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name")); // allen

JSONObject detail = jsonObject.getJSONObject("detail");
System.out.println(detail.getString("name")); // john

要支持多个名称,您需要一个嵌入式JSON数组,而不是重复键。

JSONObject jsonObj = new JSONObject("{\"name\": [\"Mike Ross\", \"Rachel Zane\"]}");
System.out.println(jsonObj.getJSONArray("name").getString(1)); // Rachel Zane