Java中Matcher類的使用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章