正则表达式攻略

3/3/2017来源:C/C++教程人气:1529

          正则表达的式对于一个项目可以说是一个很少的部分,但是他的作用确实开发过程中很必须的,我理解的正则表达式就是一个规则的表达式,是把字符串方法进行了封装,封装成一系列的符号,优点是使用方便,缺点是可读性差。下面我将通过四个方法对正则表达式的使用做一个介绍。

         1、匹配:匹配对应的字符串,完成对手机号、QQ号、传真等字符串的校验

                          使用matches方法返回值是一个boolean类型

                         PRivate static void matchesDemo() {                                //需求:校验手机号码是否正确                                String tel = "12830379893";                                String  regex = "1[358]\\d{9}";                                boolean b = tel.matches(regex);                                 System.out.println(tel+":"+b);                                }

          2、切割:分割匹配成功的对应的字符串,完成对字符串的分割

                           使用split方法,返回值是一个String  [ ]

                         private static void splitDemo() {                                // TODO Auto-generated method stub                                String temp = "zhangsan      lisi   wangwu";                                String regex = "(.)\\1+";                                String [] names = temp.split(regex);                                for(String name:names){                                System.out.println("+"+name+"+");             

                              }

                 //这里要讲一个复用的概念:用()把要复用的规则封装,叫做组,编号从1开始,可以使用编号完成对复用用规则的调用但是这样的调用只适用于一个规则的复用的时候,多规则调用用$编号。

           3、替换:替换匹配成功的对应字符串,完成对字符串的替换

                          使用replaceAll方法,返回值是一个String类型,替换

                           private static void replaceDemo() {                                 // TODO Auto-generated method stub                                 String temp = "15535569893";                                 String regex = "(\\d{3})\\d{4}(\\d{4})";                                 String replaceTemp = temp.replaceAll(regex, "$1****$2");                                 System.out.println("替换---》"+replaceTemp);                                }

               //这里要补充一下复用的概念:用()把要复用的规则封装,叫做组,编号从1开始,可以使用编号完成对复用用规则的调用但是这样的调用只适用于一个规则的复用的时候,多规则调用用$编号。

           4、获取:获取匹配成功的对应的字符串

                       使用java.util.regex.pattern对象;获取三个字母组成的单词

                           private static void getDemo() {                                 // TODO Auto-generated method stub                                 String temp = "yan shan da xue";                                 String regex = "\\b[a-zA-Z]{3}\\b";                                 Pattern p = Pattern.compile(regex);                                 Matcher m = p.matcher(temp);                                  while(m.find())                                  System.out.println("获取--》"+m.group());                                }

           5、结果见图片