正则表达式对于字符串的操作:
匹配: .matches("[1][3-578]\d{9}")
替换: .replaceAll(reg,"****")
切割: .str.split("(.)\1+")
查找:
查找需要使用对象:1.Pattern(正则对象)2.Matcher(匹配器对象)
匹配器要使用到的方法:
1.find(); 通知匹配器去匹配字符串,查找符合规则的字符串
2.group(); 获取符合规则的字符串
注意:使用group()方法一定要先使用find()方法,否则会报错。
*/
字符串匹配示例:
// 需求:编写一个正则表达式匹配手机号 第一位是1开头,第二位是:3,4,5,7,8,长度是11位
public static void matchesPhone() {
System.out.println("手机号" + ("17395213985".matches("[1][3-578]\\d{9}") ? "合法" : "非法"));
}
// 需求:匹配固定电话 区号-主机号 区号:首位是0,长度3~4 ,主机号:首位:不能是0,长度7~8
public static void matchesTel() {
System.out.println("固定电话号" + ("020-38325125".matches("[0]\\d{2,3}-[1-9]\\d{6,7}") ? "合法" : "非法"));
}
字符串切割示例:
// 需求:按照空格切割
public static void testPlit1() {
String str = "明 天 放 假";
String[] datas = str.split(" +");
System.out.println("数组元素" + Arrays.toString(datas));
}
// 需求:根据重叠词进行切割
public static void testPlit2() {
String str = "大家家家家家明天天玩得得得得开心"; // 结果:大 明 开 心
String[] datas = str.split("(.)\\1+");
//如果正则内容需要被重复使用,那么需要对正则内容进行分组,分组目的是为了提高正则的复用性
//组号不能被指定,组号要从1开始
System.out.println("数组元素" + Arrays.toString(datas));
}
替换示例:
//需求:将字符串中手机号替换成*****
public static void replaceAllTest1() {
String str="如有需求请联系我:17395213985如有需求请联系我:17395213985如有需求请联系我:17395213985如有需求请联系我:17395213985";
String reg="1[34578]\\d{9}";
str=str.replaceAll(reg,"****");
System.out.println("被替换的内容是"+str);
}
public static void replaceAllTest2() { //把重叠词替换成单个词
String str="大家家家家家明天天玩得得得得开心";
String reg="(.)\\1+";
str=str.replaceAll(reg,"$1"); //如果需要在replaceAll方法正则的外部引用组的内容,那么是使用"$组号"
System.out.println("被替换的内容是:"+str);
}
查找示例:
编译表示形式,指定为字符串的正则表达式必须首先被编译为此类的实例。
然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。
执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。
此方法编译表达式并在单个调用中将输入序列与其匹配。
/*
查找需要使用对象:
1.Pattern(正则对象)
2.Matcher(匹配器对象)
匹配器要使用到的方法:
1.find(); 通知匹配器去匹配字符串,查找符合规则的字符串
2.group(); 获取符合规则的字符串
注意:使用group()方法一定要先使用find()方法,否则会报错
*/
public static void main(String[] args) {
// 找出三个字母组成的单词
String content = "da jia men jia qin wan de yu kuai ma ma";
String reg = "\\b[a-zA-Z]{3}\\b"; // \b为边界匹配器
// 字符串的正则表达式必须首先被编译为Pattern类的实例
Pattern p = Pattern.compile(reg);
// 使用正则对象匹配字符串用于产生一个Matcher对象
Matcher m = p.matcher(content);
while(m.find()) {
System.out.println(m.group());
}
//使用group()方法一定要先使用find()方法,否则会报错正则表达式的
}