一、正则表达式
java
String str = "1324";
boolean matches = str.matches("\\d{4}");
二、爬虫
1.爬取所有的java关键字,例如java,java8,java11,java17
String str2 = "java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和java11,因为这两个是长期支持版本,下一个长期支持版本是java17,相信不久的将来java17也会面试";
Pattern p = Pattern.compile("java\\d{0,2}");
Matcher matcher = p.matcher(str2);
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
2.条件爬取——获取所有java8和java11的前面java部分
String str2 = "java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和java11,因为这两个是长期支持版本,下一个长期支持版本是java17,相信不久的将来java17也会面试";
Pattern p = Pattern.compile("java(?=8|11)");
Matcher matcher = p.matcher(str2);
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
3.条件爬取——获取所有java8和java11
String str2 = "java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和java11,因为这两个是长期支持版本,下一个长期支持版本是java17,相信不久的将来java17也会面试";
Pattern p = Pattern.compile("java(?:8|11)");
Matcher matcher = p.matcher(str2);
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
4.贪婪爬取
+默认就是贪婪爬取
String str2 = "java自从95年问世以来,abbbbbbbbbbbbbbbaaaaaaaaaaa,经历了很多版本,目前企业中用的最多的是java8和java11,因为这两个是长期支持版本,下一个长期支持版本是java17,相信不久的将来java17也会面试";
Pattern p = Pattern.compile("ab+");
Matcher matcher = p.matcher(str2);
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
5.非贪婪爬取
String str2 = "java自从95年问世以来,abbbbbbbbbbbbbbbaaaaaaaaaaa,经历了很多版本,目前企业中用的最多的是java8和java11,因为这两个是长期支持版本,下一个长期支持版本是java17,相信不久的将来java17也会面试";
Pattern p = Pattern.compile("ab+?");
Matcher matcher = p.matcher(str2);
while (matcher.find()){
String group = matcher.group();
System.out.println(group);
}
6.分组
6.1捕获分组
6.1.1内部使用
java中\1表示复用第一组
String str = "a1324a";
boolean matches = str.matches("(.)\\d{4}\\1");
System.out.println(matches);
6.1.2外部使用
6.2非捕获分组,既不计算分组
网络爬虫