今天我们来说下爬虫中必须要知道的正则表达式,学习路线如图:
正则表达式是我们学习过程中的重要一环,在以后的工作中使必须要掌握的内容,无论是爬虫,还是流行的知识图谱技术。
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("匹配失败");
}
领取专属 10元无门槛券
私享最新 技术干货