Java网络爬虫-你必须要了解的正则表达式

今天我们来说下爬虫中必须要知道的正则表达式,学习路线如图:

正则表达式是我们学习过程中的重要一环,在以后的工作中使必须要掌握的内容,无论是爬虫,还是流行的知识图谱技术。

Java中JDK已经封装了正则表达式的操作,我们无需引用第三方包。正则中我们要了解:

1> + 至少一个 ?最多一个 *任意个

2> ([s]?) (.*?) ([0-9]+) 中括号代表我们要抽取的group

3> (.*?) (.*) 正则中的贪婪模式(补上)视频中是正则贪婪与非贪婪匹配模式,非贪婪模式加?

至此我们已经基本掌握了正则的核心,其他的部分需要大家在工作学习中多运用多理解,写出更强大高效的正则表达式来辅助我们的工作。

正则表达式也是后面高级爬虫设计,知识图谱内容的基础技术,务必熟练掌握。

代码:

String path = "ab12234324.txt";

// + 至少一个 ?最多一个 *任意个

System.out.println(path.replaceAll("ab([0-9]*).txt", "123.txt"));

//System.out.println(path.replace("abc", "123"));

// spu sku 类和属性的关系 爬虫使用正则进行去重 数据抽取

String regex = "http([s]?)://detail.tmall.com/item.htm?(.*?)id=([0-9]+)";

String input = "https://detail.tmall.com/item.htm?n=23423&id=563691293403";

Matcher matcher = Pattern.compile(regex).matcher(input);

if(matcher.find()){

System.out.println("匹配成功");

System.out.println(matcher.groupCount());

System.out.println(matcher.group(1));

System.out.println(matcher.group(2));

System.out.println(matcher.group(3));

}else{

System.out.println("匹配失败");

}

// (.*?) (.*)

regex = "a(.*)a";

input = "234abcdeafaaaga";

matcher = Pattern.compile(regex).matcher(input);

if(matcher.find()){

System.out.println("匹配成功");

System.out.println(matcher.groupCount());

System.out.println(matcher.group(1));

}else{

System.out.println("匹配失败");

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180224G05SU600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券