正则表达式
1.含义
用来描述或者匹配一系列符合某个语句规则的字符串
Pattern:代表正则表达式的匹配模式
Matcher:提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持
2.案例
把一个字符串中带电话号码替换成130****1111
public class Test01 {
public static void main(String[] args) {
String str = "小红13012341111 小绿15112342222";
//正则表达式的字符串
String regex = "(\\d{3})(\\d{4})(\\d{4})";
String replaceAll = str.replaceAll(regex, "$1****$3");
//底层原理:
// Pattern pattern = Pattern.compile(regex);//获取正则表达式的对象
// Matcher matcher = pattern.matcher(str);//匹配结果
// String replaceAll = matcher.replaceAll("$1****$3");//替换
System.out.println(replaceAll);
}
}
3.案例
校验QQ邮箱
public class Test02 {
public static void main(String[] args) {
String str = "1445584980@qq.com";
//正则表达式的字符串
String regex = "\\d{5,10}@qq.com";
boolean matches = str.matches(regex);
//底层原理:
// Pattern pattern = Pattern.compile(regex);//获取正则表达式对象
// Matcher matcher = pattern.matcher(str);//获取匹配结果
// boolean matches = matcher.matches();//判断是否完全匹配
System.out.println(matches);
}
}
4.案例
分隔路径
public class Test03 {
public static void main(String[] args) {
String str = "C:\\资源\\日韩\\波多野结衣.avi";
//正则表达式的字符串
String regex = ":?\\\\";
String[] split = str.split(regex);
//底层原理
// Pattern pattern = Pattern.compile(regex);//获取正则表达式的对象
// String[] split = pattern.split(str);//分隔
for (String string : split) {
System.out.println(string);
}
}
}
5.案例
Pattern+Matcher 找到前端代码中的图片路径
public class Test04 {
public static void main(String[] args) {
String str = "<img src='hhy/aaa.jpg'/><div><div/> <input type='image' src='submit.gif' /><img src='bbb.jpg'/>";
//正则表达式的字符串
String regex = "<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg)\\b)[^>]*>";
//获取正则表达式对象
Pattern pattern = Pattern.compile(regex);
//获取匹配结果的对象
Matcher matcher = pattern.matcher(str);
// System.out.println("在字符串中是否整个匹配:" + matcher.matches());
// System.out.println("在字符串中是否开头就匹配:" + matcher.lookingAt());
// System.out.println("在字符串中是否有包含匹配:" + matcher.find());
//遍历查找
while(matcher.find()){
String group = matcher.group(2);//获取匹配结果
System.out.println(group);
}
}
}
6.总结
Pattern与Matcher一起合作
Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.
单独用Pattern只能使用Pattern.matches(String regex,CharSequence input)一种最基础最简单的匹配。
7.经验
1.正则表达式在工作中实际应用在验证邮箱、验证手机号码、替换字符串
2.正则表达式几乎不用我们自己写,百度即可