一、定义
【回顾】正则表达式的作用
- 作用一:校验字符串是否满足规则
- 作用二:在一段文本中查找满足要求的内容——爬虫
二、本地爬虫VS网络爬虫
2-1、本地爬虫
示例:
代码优化:
public static void main(String[] args) {// 大串String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久|ava17也会逐渐登上历史舞台";// 获取正则表达式对象Pattern p = Pattern.compile("Java\\d{0,2}");// 获取文本匹配去对象Matcher m = p.matcher(str);while (m.find()){String s1 = m.group();System.out.println(s1);}}
2-2、网络爬虫
示例:
三、带条件爬取VS贪婪爬取VS非贪婪爬取
3-1、带条件爬取
示例:
?=:意味着它用于匹配一个位置,该位置后面的字符序列能够匹配一个特定的模式,但本身不消耗任何字符。
3-2、贪婪爬取VS非贪婪爬取
- 贪婪爬取:在爬取数据的时候尽可能的多获取数据;
- 非贪婪爬取:在爬取数据的时候尽可能的少获取数据。
示例:
示例:
public static void main(String[] args) {String str = "Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa经历了很多版本,目前企业中用的最多的是!ava8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";// 贪婪爬取String regex = "ab+";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while (m.find()){// abbbbbbbbbbbbSystem.out.println(m.group());}// 非贪婪爬取String regex2 = "ab+?";Pattern p2 = Pattern.compile(regex2);Matcher m2 = p2.matcher(str);while (m2.find()){// abSystem.out.println(m2.group());}}