import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author gyf
* @ClassName MyTest
* @Date 2024/9/2 9:46
* @Version V1.0a
* @Description :
*/
public class MyTest {
public static void main(String[] args) {
/* 有如下文本,请按照要求爬取数据。
Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
要求:找出里面所有的JavaXX
*/
String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11," +
"因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//1.获取正则表达式的对象
Pattern pattern = Pattern.compile("Java\\d{0,2}");
//获取文本匹配器的对象
//拿着m去读取str,找符合p规则的子串
Matcher matcher = pattern.matcher(str);
//3.利用循环获取
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
}
private static void method1(String str) {
//1.获取正则表达式的对象
Pattern pattern = Pattern.compile("Java\\d{0,2}");
//获取文本匹配器的对象
//m:文本匹配器的对象
//str:大串
//p:规则
//m要在str中找符合p规则的小串
Matcher matcher = pattern.matcher(str);
//拿着文本匹配器从头开始读取,寻找是否有满足规则的子串
//如果没有,方法返回false
//如果有,返回true。在底层记录子串的起始索引和结束索引+1
boolean b = matcher.find();
System.out.println(b);
//方法底层会根据find方法记录的索引进行字符串的截取
// substring(起始索引,结束索引);包头不包尾
// (0,4)但是不包含4索引
// 会把截取的小串进行返回。
String s1 = matcher.group();
System.out.println(s1);
//第二次在调用find的时候,会继续读取后面的内容
//读取到第二个满足要求的子串,方法会继续返回true
//并把第二个子串的起始索引和结束索引+1,进行记录
b = matcher.find();
System.out.println(b);
//第二次调用group方法的时候,会根据find方法记录的索引再次截取子串
String s2 = matcher.group();
System.out.println(s2);
}
}
爬取网址中的身份证信息
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author gyf
* @ClassName MyTest
* @Date 2024/9/2 9:46
* @Version V1.0a
* @Description :
*/
public class MyTest {
public static void main(String[] args) {
/* 扩展需求2:
把连接:https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i
中所有的身份证号码都爬取出来。
*/
try {
//创建一个URL对象
URL url = new URL("https://blog.csdn.net/m0_58974397/article/details/138153820?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-16-138153820-blog-134786084.235^v43^pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.9&utm_relevant_index=19");
//连接上这个网址
//细节:保证网络是畅通
URLConnection conn = url.openConnection();//创建一个对象去读取网络中的数据
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
//获取正则表达式的对象pattern
String regex = "[1-9]\\d{17}";
Pattern pattern = Pattern.compile(regex);//在读取的时候每次读一整行
while ((line = br.readLine()) != null) {
//拿着文本匹配器的对象matcher按照pattern的规则去读取当前的这一行信息
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
br.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}