最近碰到在某个网站下载东西不能同时下载两个以上的文件,为了方便下载我用了java解析网页源码去下载文件,其中用到了正则表达式,发个简单的正则表达式例子。

public class PatternTest {
    public static void main(String[] args) {
      String testString = "<html><a href ='http://www.baidu.com' id= 'baidu' ><a href ='http://www.163.com' id='wangyi' ></html>";
      // 符合name='baidu' 的<a>标签.
      String patternString = "<\\s*[a|A]([^>]*)[i|I][d|D]\\s*[=]\\s*['|\"](baidu)['|\"](.*?)>";
      Pattern pattern = Pattern.compile(patternString, Pattern.DOTALL);
      Matcher ma = pattern.matcher(testString);
      while (ma.find()) {
          System.out.println(ma.group());
      }
    }
}

目标是提取网页中满足id='baidu'的<a>标签。下面来解释一下patternString的含义:

  \\s*    多个空格,<和a之间存在空格也是合法的

  ([^>]*)  多个非>的字符串

  (.*?)    匹配尽可能短的字符串

  

posted on 2014-11-04 22:28  美丽的并发  阅读(650)  评论(0编辑  收藏  举报