目录
1、匹配功能
需求:验证手机号码是否合法
其实用的就是String类中matches方法
/**
* 演示匹配
* 匹配手机号是否正确
*/
public static void functionDemo_1() {
String tel="15287648890";
//正则表达式 第一位肯定是1 第二位是 345789 剩下的是0-9中的任意数字
String rege="1[345789][0-9]{9}";
//校验
boolean matches = tel.matches(rege);
System.out.println(tel+":"+matches);
}
String tel="05287648890";
2、切割功能
其实使用的就是String类中的split方法。
需求:切割名字输出
分析:名字之间有很多连续的字符串,且第一个间隔的字符串与第二个间隔的字符不相同。
1、那么就把第一个间隔的字符的第一个字符定义为一组,是任意的。组用"( )"括号表示 "."表示任意。
2、在正则中会根据"( )"自动编号分组,所以第一个字符的编号为1,后面的需要沿用1组。出现一次或者多次。可以用正则"X+",X代表匹配的内容。
3、1需要被转义成组编号,所以需要加"\1","\1"在字符串中又要转义,所以最终的形式是"\\1+"
编码:
/**
* 切割
* 组
* 在表达式 ((A)(B(C))) 中,存在四个这样的组:
* 1组 ((A)(B(C)))
* 2组 \A
* 3组 (B(C))
* 4组 (C)
*/
public static void functionDemo_2() {
String str = "zhangsanttttxiaoqiangmmmmmmzhaoliu";
//字符的切割方法split() 里面传入正则表达式
String[] names = str.split("(.)\\1+");
for (String name : names) {
System.out.println(name);
}
}
3、替换
1、将重复的字符使用#替换。
2、重复字符只输出一次。
3、隐藏指定的数字字符
public static void functionDemo_3() {
String str = "zhangsanttttxiaoqiangmmmmmmzhaoliu";
String str1 = "zhangsanttttxiaoqiangmmmmmmzhaoliu";
//1、将字符串中重复的字符用#替换
str = str.replaceAll("(.)\\1+", "#");
System.out.println(str);//zhangsan#xiaoqiang#zhaoliu
//$可以在其他参数中对前一个参数中已有的正则的规则获取
// 2、获取重复字符,重复字符只输出一次
String tow= str1.replaceAll("(.)\\1+", "$1");
System.out.println(tow);//zhangsantxiaoqiangmzhaoliu
//3、隐藏指定的数字字符
String tel="15288544569";
//正则分组,按照分组输出
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.println(tel);
}
4、获取
1、先将正则表达式封装成对象
2、通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher
3、通过Matcher匹配器对象的方法对字符串进行操作。
/**
* 获取
* 将正则规则进行对象的封装。
* Pattern p = Pattern.compile("a*b");
* //通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher .
* Matcher m = p.matcher("aaaaab");
* //通过Matcher匹配器对象的方法对字符串进行操作。
* boolean b = m.matches();
*/
public static void functionDemo_4() {
String str = "da jia hao,ming tian bu fang jia!";
/**
*[a-z]{3} 获取连续三个字母的单词
* \\b拥有单词边界
*/
String regex = "\\b[a-z]{3}\\b";
//1,将正则封装成对象。
Pattern p = Pattern.compile(regex);
//2, 通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//使用Matcher对象的方法对字符串进行操作。
//既然要获取三个字母组成的单词
//查找。 find();
System.out.println(str);
while(m.find()){
System.out.println(m.group());//获取匹配的子序列
//获取单词的起始位置
System.out.println(m.start()+":"+m.end());
}
}