1 正则表达式
示例:
public static void main(String[] args) {
//匹配身份证号
//350302 1985 07 04 018X
//前6位: 第一位不能是0,后五位随机 [1-9]\\d{5}
//年份: 开头19|20 后两位随机 ((19)|(20))\\d{2}
//月份:01-09|10-12 ((0[1-9])|(1[0-2]))
//日期:01-09|10-19|20-29|30-31 ((0[1-9])|([12][0-9])|(3[01]))
//后四位:前三位随机数,后一位数字或X或x \\d{3}[\\dXx]
String regex="[1-9]\\d{5}((19)|(20))\\d{2}((0[1-9])|(1[0-2]))((0[1-9])|([12][0-9])|(3[01]))\\d{3}[\\dXx]";
System.out.println("620902197501170729".matches(regex));//T
System.out.println("35030219850704018X".matches(regex));//T
System.out.println("42068319460201022x".matches(regex));//T
System.out.println("340304186603307579".matches(regex));//F
System.out.println("040426195606261248".matches(regex));//F
System.out.println("360483198213247775".matches(regex));//F
}
2 爬虫
此处做简单学习即可,写爬虫用Python不香?
java.util.regex 包是 Java 标准库中用于支持正则表达式操作的包:
- Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
- Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
- PatternSyntaxException:PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
示例1:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String content="JAVA 是一种广泛使用的编程语言,由Sun Microsystems于1995年首次发布。" +
"随着技术的发展,Java 经历了多个版本的更新,包括Java 8于2014年3月发布,主要引入了Lambda表达式、Stream API和新的时间日期API;" +
"Java 9于2017年9月发布,最显著的特性是模块系统(Project Jigsaw)和JShell,增强了开发的灵活性;" +
"Java 10于2018年3月发布,加入了局部变量类型推断(var)和应用程序类数据共享;" +
"Java 11于2018年9月发布,是一个长期支持版本(LTS),引入了新的API和多项性能增强;";
//获取正则表达式对象
Pattern p = Pattern.compile("(?i)(JAVA) \\d{0,2}");
//获取文本匹配器对象
Matcher m =p.matcher(content);
int count=0;
while (m.find()){
String s =m.group(0);
System.out.println(s);
count++;
}
System.out.println("count:"+count);
}
}