正则表达式可以快速匹配文本当中的字符串
使用方法:
1、需要一个待处理的文本
String content = "2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。" +
"2001年9月24日,J2EE1.3发布。2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提升," +
"与J2SE1.3相比,其多了近62%的类和接口。在这些新特性当中,还提供了广泛的XML支持、" +
"安全套接字(Socket)支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。" +
"2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性," +
"J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新," +
"其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。";
2、创建一个pattern对象,模式对象(也可以理解为正则表达式对象)
regStr为要得到的字符串类型
String regStr = "\\d\\d\\d\\d";
Pattern pattern = Pattern.compile(regStr);
3、创建一个匹配器对象
Matcher matcher = pattern.matcher(content);
就是 matcher 匹配器按照 pattern 模板 去content 文本中进行匹配,匹配到就返回true,否则返回false
4、开始循环匹配
while (matcher.find()){
//匹配到的内容会放入到matcher.group(0)
System.out.println("匹配到的内容" + matcher.group(0));
}
- matcher.find() 当多次执行时会覆盖前面的记录(未分组情况下)若查找1998
- 1、根据指定的规则,定位满足规则的字符串
- 2、若找到字符串,将字符串的起始位置进行记录到matcher对象的属性
- int[] group 中 group[0]就是该字符串的起始位置,group[1]就是该字符串结束位置+1
- 3、同时记录oldLast为该字符串结束位置+1,即下次执行find是从oldLast处进行匹配
- matcher.find() 当多次执行时会覆盖前面的记录(分组情况下)若查找(19)(98)
- 1、根据指定的规则,定位满足规则的字符串
- 2、若找到字符串,将字符串的起始位置进行记录到matcher对象的属性
- int[] group 中 group[0]就是该字符串的起始位置,group[1]就是该字符串结束位置+1 记录字符串的位置 group[0] = 0,group[1] = 4;
- 记录1组()的位置 group[2] = 0,group[3] = 2;
- 记录2组()的位置 group[4] = 2,group[5] = 4;
- 3、同时记录oldLast为该字符串结束位置+1,即下次执行find是从oldLast处进行匹配
- matcher.group(0)
- 输入参数:0 代表要取整个字符串 1 代表要取第1组() 2 代表要取第2组()
- 开始位置:输入参数*2 结束位置:出入参数*2+1
- 根据group[0](开始位置)和group[1](结束位置)记录的位置,在content中截取字符串(左闭右开)并进行返回