1.直接上代码
@Test
void contextLoads() {
String regex = "[0-9][0-9]";//两位数字
String str = "11我们是22我们是33";
//1.Pattern类作用
//1.1调用静态方法matches判断正则跟目标对象是否匹配
boolean m = Pattern.matches(regex, str);//false
//1.2初始化正则模板,得到模板对象可以进行多种操作
Pattern pattern = Pattern.compile(regex);
//2.模板对象作用
//2.1用正则模板来分离目标
String[] split = pattern.split(str);//["","我们是","我们是"]
//2.2用正则模板来匹配目标,得到匹配对象
Matcher matcher = pattern.matcher(str);
//*3.匹配对象的作用
int i = 2;//三种匹配方案
switch (i) {
case 1://matcher.matches();将str看成一个整体用regex配置
boolean matches1 = matcher.matches();//false,跟1.1作用效果一样
break;
case 2://matcher.find();在str中查看所有符合regex的
/**
* 每次find后matcher都会自动获取下一个
*/
boolean b0 = matcher.find(); //true
int start = matcher.start();//0
int end = matcher.end();//2
String group0 = matcher.group();//11
boolean b1 = matcher.find(); //true
int start1 = matcher.start();//5
int end1 = matcher.end();//7
String group1 = matcher.group();//22
boolean b2 = matcher.find(); //true
int start2 = matcher.start();//10
int end2 = matcher.end();//12
String group2= matcher.group();//33
/**
* 等效于下面代码
*/
while (matcher.find()){
String group = matcher.group();//11 22 33
}
/**
* 注意 find(int group) find(0)从第一个开始遍历 find(n)从第二个开始遍历
*/
boolean b3 = matcher.find(1);
String group3 = matcher.group();//22
boolean b4 = matcher.find(2);
String group4 = matcher.group();//22
boolean b5 = matcher.find(3);
String group5 = matcher.group();//22
boolean b = matcher.find(0);
String group = matcher.group();//11
/**
* 注意replaceAll()之后不能继续匹配
*/
boolean b7 = matcher.find(); //true
int start7 = matcher.start();//0
int end7 = matcher.end();//2
String group07 = matcher.group();//11
String s = matcher.replaceAll("");//我们是我们是
boolean b8 = matcher.find(); //false
break;
case 3://matcher.lookingAt();在str中从第一位开始匹配regex的
Boolean aBoolean = matcher.lookingAt();//true
String group6 = matcher.group();//11
Boolean aBoolean2 = matcher.lookingAt();//true
String group7 = matcher.group();//11
Boolean aBoolean4 = matcher.lookingAt();//true
String group8 = matcher.group();//11
break;
}
}
2.总结
正则:regex 目标字符串:str
1.如果判断regex是否跟str匹配,直接用:boolean m = Pattern.matches(regex, str);或boolean matches = str.matches(regex);
2.如果要去除或者替换str中多个跟regex配置的字符串:str.replaceAll(regex,"")或者String s1 = Pattern.compile(regex).matcher().replaceAll(str);
3.如果要操作str中多个跟regex配置的字符串:Matcher matcher= Pattern.compile(regex).matcher(str);然后while循环matcher对象。