需求:从html网页中获取某个json字符串中key的value。
例如:有以下字符串,获取display_url的值。
<script type="text/javascript">
{"graphql":{"media_preview":"www.baidu.com","display_url":"www.google.com"}}
</script>
/**
* @param source html网页
* @param reg 正则表达式
* @return
*/
public static String match(String source, String reg) {
Matcher m = Pattern.compile(reg).matcher(source);
String result = "";
while (m.find()) {
result = m.group(0);
System.out.println("m.group(0) -> " + result);
result = m.group(1);
System.out.println("m.group(1) -> " + result);
}
return result;
}
public static void main(String[] args) {
String source = "<script type=\"text/javascript\">\n"
+ "{\"graphql\":{\"media_preview\":\"www.baidu.com\",\"display_url\":\"www.google.com\",\"id\":188}}\n"
+ "</script>";
String reg = "\"display_url\":\"(.*?)\",";
System.out.println(match(source, reg));
}
输出结果:
m.group(0) -> "display_url":"www.google.com",
m.group(1) -> www.google.com
www.google.com
正则表达式说明:
"display_url":"(.*?)",
1、第一个group(0)是默认的,表示整个正则表达式所匹配的字符串。
2、第二个group(1)才是正则表达式中()所匹配的值。
3、“.”表示匹配任意字符;“*”表示匹配多个;“?”表示贪婪匹配,表示前面符合".*”+后面符合“"”最短的字符串。