看 黑马java 视频 所做笔记。
正则表达式主要是用来操作字符串的,用一些特定的符号来表示一些代码的操作。
正在表达式的作用:
1.匹配:String matches方法,用规则匹配整个字符串,只要有一处不符合规则,就匹配失败,返回false。
public class QQDemo {
public static void main(String[] args) {
/*
* 需求 校验qq是否合法 qq长度在5-12位之间 qq不能0开头 qq都是数字
*/
String qq = "133456";
// 第一个字符范围在1-9之间
// 第二个字符是数字0-9之间
// {}表示第二个字符出现的次数至少4次,最多14次
String regex = "[1-9]\\d{4,14}";
checkQQ(qq, regex);
}
private static void checkQQ(String qq, String regex) {
boolean flag = qq.matches(regex);
if (flag) {
printOut("qq " + qq);
} else {
printOut("qq不合法...");
}
}
2.切割:String split
private static void splitDemo() {
// TODO Auto-generated method stub
/*
* String str = "hello world"; String regex = " +"; 按照多个空格切割
*/
/*
* String str = "hello.world"; String regex="\\."; 在正则表达式里面表示一个单独的.
*/
/*
* String str = "c:\\abc\\a.txt"; String regex="\\\\"; "\" 将会把后面的"转义
*/
String str = "decccccccccsdiiiiqieggggge";
String regex = "(.)\\1+"; // 按照叠词完成切割,为了可以让规则可以重用,可以将规则封装成一个组,用()完成,从1开始
// 想要使用已有的组,可以通过 \n 的形式获取,n就是组的编号.
// 第一位为任意字符,第二位拿的是第一位的结果
String[] att = str.split(regex);
for (String s : att) {
printOut(s);
}
}
3.替换:String replaceall
private static void replaceDemo() {
/* String str="afdfd184485fddddfdfa1dfdfdf15";
String regex="\\d{5,}";
str=str.replaceAll(regex, "f");//连续超过5个或5个以上就替换
*/
String str="abbcdeeeefghlllm";
String regex="(.)\\1+";
// str=str.replaceAll(regex, "#");//将叠词替换成#
str=str.replaceAll(regex, "$1");//$1 表示拿前面获取的第一个组
printOut(str);
}
4.获取,将字符串中符合规则的字符串取出
操作步骤:1.将正则表达式封装成对象。
2.让正则对象和要操作的字符串对象相关联。
3.关联后,获取正则匹配引擎。
4.通过引擎对符合规则的字符串进行操作,比如,取出。
private static void getDemo() {
// TODO Auto-generated method stub
String str = "ming tian jiu yao fang jia la !";
String regex = "\\b[a-z]{3}\\b"; // \\b 单词的边界
// 将规则封装成对象
Pattern p = Pattern.compile(regex);
// 让正则对象和相作用的字符串关联,获取匹配器对象
Matcher m = p.matcher(str);
/*
* m.matches();//其实string matches方法,用的就是pattern 和 matcher对象来完成
* //只不过被string对象封装后,用起来比较简单,功能单一
*/
while (m.find()) // 将规则作用于字符串上,并进行符合规则的字符串查找。
{
printOut(m.group());// group用于获取匹配后的结果
printOut(m.start() + "......." + m.end());
}
}
练习:邮箱匹配
private static void checkEmail() {
// TODO Auto-generated method stub
String email="dfd@qq.com";
String regex="\\w+@\\w+(\\.\\w+){1,3}";
printOut(email.matches(regex)+"");
}