本地爬虫
- 有如下文本,请按照要求爬取数据
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持的版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台 - 要求:找出里面所有的JavaXX
- 提示:
Pattern类:表示正则表达式
Matcher类:文本匹配器,作用是按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的子串
package Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FTest {
public static void main(String[] args) {
/*
* 本地爬虫
* 有如下文本,请按照要求爬取数据
* Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持
* 的版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
* 要求:找出里面所有的JavaXX
* 提示:Pattern类:表示正则表达式
* Matcher类:文本匹配器,作用是按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的子串
* */
String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持" +
"的版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//method1(str);
//1.获取正则表达式的对象
Pattern p = Pattern.compile("Java\\d{0,2}");
//2.获取文本匹配器的对象
//拿着m去读取str,找符合p规则的子串
Matcher m = p.matcher(str);
//3.利用循环获取符合正则表达式的子串
//此循环的具体的解释可以看方法method1(),method1就是循环的拆解版
while(m.find()){
String s = m.group();
System.out.println(s);
}
}
private static void method1(String str) {
//1.获取正则表达式的对象
// 静态方法compile(String regex) 会返回一个对象 new Pattern(regex, 0);
Pattern p = Pattern.compile("Java\\d{0,2}");
//2.获取文本匹配器的对象
//m:文本匹配器的对象
//str:大串
//m要在str中找符合p规则的小串
//类Pattern的静态方法matcher会返回一个对象new Matcher(this, input);
Matcher m = p.matcher(str);
//3.拿着文本匹配器从头开始读取,寻找是否有满足规则的子串
//如果没有,方法返回false
//如果有,返回true。在底层记录子串的起始索引和结束索引+1
//0,4
boolean b = m.find();
//方法底层会根据find方法记录的索引进行字符串的截取
//subString(起始索引,结束索引);包头不包尾
//(0,4)但是不包含4索引
String str1 = m.group();
System.out.println(str1);
//第二次在调用find的时候,会继续读取后面的内容
//读取到第二个满足要求的子串,方法会继续返回true
//并把第二个子串的起始索引和结束索引+1,进行记录
b = m.find();
//第二次调用group方法的时候,会根据find方法记录的索引再次截取子串
String str2 = m.group();
System.out.println(str2);
}
}