1.1 string.matches(regex)
String email = "LJ@qq.com";
String regex = "^\\w+@\\w+(\\.\\w+)+$";
//matches的底层也是Pattern
boolean flag = email.matches(regex);
System.out.println(flag);
1.2 pattern.matcher( string)
String email = "LJ@qq.com";
String regex = "^\\w+@\\w+(\\.\\w+)+$";
//java的正则标准写法
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
boolean flag = matcher.matches();
System.out.println(flag);
2. 正则的作用截取子串
String regex = "^\\w+@(\\w+)(\\.\\w+)+$";
String email = "LJ@qq.com";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
boolean flag = matcher.matches();
if(flag){
for(int i = 0;i<=matcher.groupCount();i++){
//捕获组
String g = matcher.group(i);
System.out.println(g);
}
}else{
System.out.println("匹配失败!");
}
结果:LJ@qq.com
.com
2.1注意事项
1.捕获组是从1开始,0号捕获组是全部字符串
2.String email = "LJ@qq.com.cn";
如果写成这样,捕获的结果应该是离捕获组最近的那个 .cn 。因为先匹配.com 再匹配.cn
3.String regex = "^\\w+@(\\w+)(?:\\.\\w+)+$";
结果是:qq.加上?:的效果的不捕获文本,也不进行计数