Java 如何编写正则表达式从字符串中提取模式
我有一个JSON字符串,我想提取我需要关心的信息。我想要的是从JSON字符串中提取键'name'的值,可能有多个'name'条目 e、 g JSON字符串是:Java 如何编写正则表达式从字符串中提取模式,java,regex,json,Java,Regex,Json,我有一个JSON字符串,我想提取我需要关心的信息。我想要的是从JSON字符串中提取键'name'的值,可能有多个'name'条目 e、 g JSON字符串是: {"key1":"value1","key2":"value2","key3":"value3","name":"allen","detail":{"detailkey1":"detailvalue2","name":"john","detailkey2":"detailvalue2"}} 我需要从这个JSON字符串中提取'allen'
{"key1":"value1","key2":"value2","key3":"value3","name":"allen","detail":{"detailkey1":"detailvalue2","name":"john","detailkey2":"detailvalue2"}}
我需要从这个JSON字符串中提取'allen'和'john'
我不熟悉regex,希望有人能帮我
如果您能用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));
}
我建议使用任何JSON解析器来解析它。下面是如何使用Java解析器来实现这一点 要支持多个名称,您需要一个嵌入式JSON数组,而不是重复密钥
JSONObject jsonObj = new JSONObject("{\"name\": [\"Mike Ross\", \"Rachel Zane\"]}");
System.out.println(jsonObj.getJSONArray("name").getString(1)); // Rachel Zane
尝试一下,并展示你的代码。找到一个JSON库并保存你的理智我自己试试,发现它很简单^ ^@lorcel是的,它很简单。如果您以后觉得需要将JSON映射到Java对象,请查看。如果有帮助的话,请不要忘记。
JSONObject jsonObj = new JSONObject("{\"name\": [\"Mike Ross\", \"Rachel Zane\"]}");
System.out.println(jsonObj.getJSONArray("name").getString(1)); // Rachel Zane