正则表达式只适用于字符串
匹配matches
实际使用的是String类中定义的方法boolean matches(String regex)
public static void piPei( ){String regex="[1][356789]\\d{9}";boolean boo="14838384388".matches(regex);System.out.println(boo);
}
验证qq号是否合法:5-15, 不能以0开头,必须全是数字
class Demo5
{public static void main(String[] args) {//String regex="[1-9][0-9]{4,14}";//正则表达式String regex="[1-9]\\d{4,14}";//正则表达式String qq="123456478";System.out.println(qq.matches(regex));System.out.println(checkQQ("sqd123456"));}public static boolean checkQQ(String qq){int l=qq.length();if (l>=5&&l<=15){if(!qq.startsWith("0")){try{long num=Long.parseLong(qq);return true;}catch (NumberFormatException e){System.out.println("qq号必须全为数字!");}}else System.out.println("不能以0开头!");}else System.out.println("长度不合法!");return false;}
}
切割
实际使用的是String类中定义的方法 String[] split(String regex) ,根据字符串中符合正则规则的字符串进行切割
public static void qieGe(){String str1="zhangsan,lisi,wangwu,zhaoliu";String regex1=",";String str2="zhangsan lisi wangwu zhaoliu";String regex2=" +";String str3="zhangsan,lisi,wangwu,zhaoliu";String regex3="\\.";String str4="zhangsan$$$$$lisi*******wangwu###zhaoliu";String regex4="(.)\\1+";//重复字符切//从左往右,第一对小括号就是第一组,第二对小括号就是第二组String[] arr = str0.split(regex0);for(String ss:arr){System.out.println(ss);}
}
替换
实际使用的是String类中定义的方法 String replaceAll(String regex, String replacement) ,把字符串中符合正则规则的内容替换为第二个参数接收的字符串
public static void tiHuan(){String str1="zhangsan$$$$$lisi*******wangwu###zhaoliu";str1=str1.replaceAll("(.)\\1+","$1")//$1 表示取第一组的值String str2="owieurioeu13623456666iwoeu18663333sdf01012345";str2=str2.replaceAll("(\\d){6,}","****");//owieurioeu****iwoeu****sdf****String str3="13555486684";str3=str3.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");System.out.println(str0);
}
获取
使用Pattern和Matcher实现
-
定义获取的内容符合的正则规则
-
把正则表达式编译为Pattern类型的对象
-
使用pattern类型的对象,获取Matcher对象,
Matcher对象具备从字符串中获取我们能需要的内容的功能
-
使用Matcher对象获取内容 boolean find() 一次找一个
import java.util.regex.*;
class Demo{public static void main(String[] args) {String str="zhu yi le, sdhi shi shw weada sdsd";String regex="[a-z]{4}";Pattern p=Pattern.compile(regex);Matcher m=p.matcher(str);while (m.find()){System.out.println(m.group());}}
}
练习
String str="我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程";
str=str.replaceAll("\\.+","");
System.out.println(str);
str=str.replaceAll("(.)\\1+","$1");
System.out.println(str);
String str="192.168.1.200 10.10.10.10 4.4.4.4 127.0.0.1";
str=str.replaceAll("(\\d{1,3})","00$1");
System.out.println(str);
str=str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
String[] arr=str.split(" +");
Arrays.sort(arr);
for (String ss:arr){System.out.print(ss.replaceAll("0*(\\d{1,3})","$1")+" ");
}