正则表达式:符合一定规则的表达式
作用:用于专门操作字符串
特点:用于一些特定的符号来表示一些代码操作,这样简化书写
学习正则表达式,就是了解特殊符合的使用
好处:可以简化对字符串的复杂操作
弊端:符合定义越多,正则越长,阅读星越差
具体操作功能
1.匹配:String matches方法,用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回flase
2.切割 String split方法
3 替换:replace replaceAll
4.获取:将字符串中符合规则的子串取出。
操作步骤:
1.将正则表达式封装成对象
2.让正则对象和要操作的字符串相关联
3.关联后获取正则匹配引擎
4.通过引擎对符合规则的字符串进行操作,比如取出。
import java.util.regex.*; class regexDemo { public static void main(String[] args) { String qq="12465"; String regex="[1-9][0-9]{4,14}"; //System.out.println(qq.matches(regex)); //demo(); //splitDemo(); //replaceAllDemo(); myregex(); } public static void demo(){ String str="b"; String reg="[bcd]"; System.out.println(str.matches(reg)); String str1="b8"; String reg1="[bcd]\d"; System.out.println(str1.matches(reg1)); } public static void splitDemo(){ String str="erkktyqqquizzdo"; String reg="(.)\1+";//按照叠词完成切割,为了可以让规则的结果被重用 //可以将规则封装成一个组,用()完成,组的出现都有编号 //从1开始,想用使用已有的组可以通过 (n是组的编号)的形式来获取 String[] arr=str.split(reg); for(String s:arr){ System.out.println(s); } } public static void replaceAllDemo(){ String str="wer461561685er6546515ere654131"; String reg="\d{5,}"; String newStr="#"; //用$符号获取前面的组 String str1="aaddfcfgdsssdf";//将重叠的字母替换成一个 String reg1="(.)\1+";//相同的字符出现两次或多次 String newStr1="$1"; //System.out.println(str.replaceAll(reg,newStr)); System.out.println(str1.replaceAll(reg1,newStr1)); } public static void myregex(){ String str="ming tian yao qu shang ban le "; String reg="[a-z]{3}"; //将规则封装成对象。Pattern无构造方法,使用complie获取对象 Pattern p=Pattern.compile(reg); //让正则对象和要作用的字符串相关联.获取匹配器对象 //其实String类中的matches方法,用的就是Pattern和Mathcher。 //只是提供的功能单一,如果使用更复杂的操作就需要使用Pattern和Matcher类 Matcher m=p.matcher(str); //将规则作用到字符串,并进行符合规则的子串查找 //boolean b=m.find(); //用于匹配后的结果。必须进行匹配查找才可以 //System.out.println(m.group()); //取出方式,先find,在group。 while(m.find()){ System.out.println(m.group()); } } }