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

lor*_*cel -1 java regex json

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

例如,JSON字符串是:

{"key1":"value1","key2":"value2","key3":"value3","name":"allen","detail":{"detailkey1":"detailvalue2","name":"john","detailkey2":"detailvalue2"}}
Run Code Online (Sandbox Code Playgroud)

我需要从这个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));
    }
Run Code Online (Sandbox Code Playgroud)

Rav*_*yal 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
Run Code Online (Sandbox Code Playgroud)

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

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