需求:從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、“.”表示匹配任意字符;“*”表示匹配多個;“?”表示貪婪匹配,最表示前面符合".*”+後面符合“"”最短的字符串。