第一篇:记录研究生的学习

不管是逼迫自己学习,还是让为了以后能找份像样点的工作,自己慢慢觉得得写一些什么,慢慢记录自己研究生的学习过程吧。

自己知道在整个CS人生中,现在还属于毛皮都没摸到的阶段,所以正因为如此才需要点点滴滴记录自己的学习过程,只是为了

给自己看,让自己在学习的过程中能够回过头思考。话不多说:

第一篇讲的是JAVA中正则表达式的匹配,这在网络爬虫会运用很多,因为页面都是DOM对象格式,想获取哪一个单元里面的

内容就可以用正则表达式去取,关于正则的原理,我这里不想多说,可以参考30分钟正则表达式快速入门,以后会有机会去讲

正则表达式的使用技巧。参考链接是:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

在java中,传参会有匹配规则和待匹配内容,匹配结果也会有个字符串或者一个字符串列表,下面写的是两种正则表达的匹配

函数:

1.返回字符串

public static String RegexOutStringOp(String regexstr,String content){
  final String patternString=regexstr;
  Pattern pattern=Pattern.compile(patternString);
  Matcher matcher=pattern.matcher(content);
  if(matcher.find()){
    String resultstr=matcher.group(1);
    return resultstr;
  }
  return null;
}

其中,regexstr是匹配规则,content是待匹配内容,这里要注意的是由于返回的是group(1)的内容,所以匹配规则里面需要加

相应的括号(原理参照正则表达式学习中分组匹配这一节),下面是运行结果:

public static void main(String[] args){
  System.out.println(RegexOutStringOp("(20[0-9]{2}[-,年][0-9]{1,2}[-,月][0-9]{1,2}[日*])","当天的时间是2013年05月25日"));
}

控制台结果:

2013年05月25日

我们可以看到匹配规则中全部最外有一个括号,就是获取括号里面的内容。

2.返回匹配列表:

public static ArrayList<String> RegexOutListOp(String regexstr,String content){
  ArrayList<String> resultList = new ArrayList<String>();
  Pattern p = Pattern.compile(regexstr,Pattern.CASE_INSENSITIVE);//匹配
  Matcher m = p.matcher(content);
  while (m.find()) {
    resultList.add(m.group(1));//获取被匹配的部分
  }
  if(!resultList.isEmpty()){
    return resultList;
  }
  else{
    String tmpstr = new String("该list为空");
    resultList.add(tmpstr);
    return resultList;
  }
}

原理相同,不在赘述。

下面是运行结果。

public static void main(String[] args){
  //System.out.println(RegexOutStringOp("(20[0-9]{2}[-,年][0-9]{1,2}[-,月][0-9]{1,2}[日*])","当天的时间是2013年05月25日"));
  System.out.println(RegexOutListOp("<p>(.*?)</p>","<p>这是第一组</p><p>这是第二组</p><p>这是第三组</p>"));
}

控制台结果:

[这是第一组, 这是第二组, 这是第三组]

最后在一些常用正则表达式规则吧:

<a[^<>]*?href="([^<>]*?)"[^<>]*?          网页链接

<title>([[^</title>]|[a-z]|[A-Z]]*)            网页标题

(20[0-9]{2}[-,年][0-9]{1,2}[-,月][0-9]{1,2}[日*])    日期

\(?0\d{2}[) -]?\d{8}                  电话

这几个是我自己的常用的,更多常用的可以参考:http://www.williamlong.info/archives/433.html

今天就到这里。。。。。

posted on 2013-05-25 13:29  Monster_Ch  阅读(129)  评论(0)    收藏  举报

导航