Java中正则表达式
1.快速体验
package com.qj.Regexp_;
/*
* @ClassName: regexp
* @User: QianJueZhang
* @Description:
* @Date: 2022/12/29 19:02
*/
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regexp {
public static void main(String[] args) {
String str = "11110000.00001111.10101010.01010101";
String regStr = "(\\d\\d)(\\d\\d)";
// 1.创建模式对象,即正则表达式对象
Pattern pattern = Pattern.compile(regStr);
// 2.创建匹配器,按照正则表达式regStr的规则去匹配字符串str
Matcher matcher = pattern.matcher(str);
// 3.开始匹配
/* boolean b = matcher.find();
* matcher.find()完成的任务
* 1. 根据指定的规则,定位满足规则的子字符串(比如1111)
* 2. 找到后,将子字符串的开始索引 记录到matcher对象的属性 int[] groups中
* groups[0] = 子字符串开始的下标; groups[1] = 子字符串结束的下标+1;
* 如果有分组时:
* groups[2] = 第1组子字符串的下标; groups[2] = 第1组子字符串结束的下标+1;
* groups[2] = 第2组子字符串的下标; groups[2] = 第2组子字符串结束的下标+1;
* ...
*
* 3. 同时记录oldLast的值为 子字符串结束的下标+1;即下次执行find 时,就从此下标开始匹配
* */
while (matcher.find()) {
// matcher.group(0) 匹配的子字符串的开始,匹配的子字符串的结束+1
// matcher.group(0) 匹配的子字符串其中第1组的开始,第1组的结束+1
// ...
// 分组数不能越界
System.out.println("找到:" + matcher.group(0));
System.out.println("第1组():" + matcher.group(1));
System.out.println("第2组():" + matcher.group(2));
}
// 输出结果
// 找到:1111
// 第1组():11
// 第2组():11
// 找到:0000
// 第1组():00
// 第2组():00
// 找到:0000
// 第1组():00
// 第2组():00
// 找到:1111
// 第1组():11
// 第2组():11
// 找到:1010
// 第1组():10
// 第2组():10
// 找到:1010
// 第1组():10
// 第2组():10
// 找到:0101
// 第1组():01
// 第2组():01
// 找到:0101
// 第1组():01
// 第2组():01
}
}
tips: java正则表达式默认区分字母大小写;默认贪婪匹配
正则表达式内容梳理
(待写。。。)