毕向东之正则表达式
/*正则表达式:符合一定规则的表达式(API方法中参数为regex的为正则) 作用:用于专门操作字符串,可以简化对字符串的复杂操作 需求:对QQ号码进行校验,要求:5-15位,0不能开头 当用字符串的方法去实现时比较麻烦,而正则表达式做起来比较简便 */ public class Test1 { public static void main(String[] args) { String regex="[1-9][0-9]{4,14}";//第一个数为1至9,4到14个0至9的数 String qq="12345"; boolean flag=qq.matches(regex); if(flag) System.out.println("OK"); else System.out.println("不合法"); } }
/*具体操作功能: 1.匹配:String matches方法。用规则匹配整个字符串 [abc] 代表a或b或c 2.切割:spit 3.替换:replace */ public class Test2 { public static void main(String[] args) { replaceAll(); } public static void replaceAll(){ String regex="(.)\\1+";// String str="aaafdddkkkdasd"; str=str.replaceAll(regex,"$1");//$1表示获取组1的值 System.out.println(str);//afdkdasd } public static void spitDemo(){ String regex=" +";//当有多个空格时,用+表示 String str="aa d cd dasd"; String[] arr=str.split(regex);//按照多个空格切割 for(String s:arr){ System.out.println(s);//四个 } //按照叠词完成切割 regex="(.)\\1+";//(.)表示组 .表示任意字符 1+表示多个和1组相同的字符 str="avvbcffffdasddz"; String[] arr2=str.split(regex); for(String s:arr2){ System.out.println(s); } } public static void matchesDemo(){ String regex="[1][358]\\d{9}"; String str="135425568755"; System.out.println(str.matches(regex)); } }
/*4.获取 其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的 只不过被String的方法封装后,用起来较为简单,但是功能却单一 */ import java.util.regex.*; public class Test3 {//获取单词数为4个的单词 public static void main(String[] args) { String str="ming tian jiu yao fang jia le,da jia"; String reg="\\b[a-z]{4}\\b";//\b代表单词边界 Pattern p=Pattern.compile(reg);//将规则封装成对象 Matcher m=p.matcher(str);//让正则对象和要作用的字符串相关联,获取匹配器对象 while(m.find()){//进行符合规则的子串查找 System.out.println(m.start()+"..."+m.end());//符合要求的索引 System.out.println(m.group());//获取匹配后结构过(类似于迭代器) } } }