黑马程序员-javase 正则表达式

来源:互联网 发布:mac怎么打开html文件 编辑:程序博客网 时间:2024/06/06 02:25

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

正则表达式

一、基本特点

        正则表达式:符合一定规则的表达式。

        作用:用于专门的操作字符串

        特点:用于一些特定的符号来表示一些代码操作,这样就简化书写

        学习一些特殊符号的使用

        好处:可以简化对字符串的复杂

        弊端:符号定义越多,正则越长,阅读性极差

        正则表达式的符号在java.util.regex里


三 要注意的地方

      1、正则表达式中\d 加在一块是一个整体。在String语句中会把出现\会把后面的转义,

            正则表达式反斜杠是一对一 对出现的. 表示任意字符,\\. 表示.

      2、为了让规则的结果可以被重用,可以将规则封装成一个组,用()完成,组的出现都有编号,

           从1开始,0是原有的串,想要使用已有的组可以通过\n(n就是组的编号)) 来获取(在原有的字符串里)

           如果不是在同一个字符串里要获取组里面的结果用$n;((())()) 看有几组,就看有几个左括号,


四、正则表达式具体功能

     1  匹配,String mathches 方法,用规则匹配整个字符串,只要有移除不符合规则,返回false

      实例1):
/* * 写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。例如:18601088888、13912366666 */public class Test9 {public static void main(String[] args) throws IOException {/* * (\\d)\\1{4} 表示的是第一个为数字,后面4位与第一个括号里的内容相同 */for(int i=0;i<10;i++){BufferedReader br = new BufferedReader ( new InputStreamReader(System.in));String str = br.readLine();System.out.println("是否是题目要求的手机号:"+str.matches("1[3,4,5,8]\\d{4}(\\d)\\1{4}"));}}}

     实例2)


     2  切割: String split();

public class SplitDemo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub        String regex1 = "\\.";//一个逗号        String regex2 = " +";//一个或多个空格以上        String regex3 = "(.)\\1+";//出现2次或2次以上                print("120.0.0.1".split(regex1));//按逗号切        print("w h e   r e".split(regex2));//按空格切        print("aaabbsdsss".split(regex3));//两次或两次以上的叠词切}public static void print(String arr[]){for(String str :arr){System.out.print(str);}System.out.println();return ;}}


     3  替换 String replaceAll(String regex,String replacement)方法

     实例:

public class Replace {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString regex1 = "\\d{5,}";//连续5个字符String regex2 = "(.)\\1+";//任意字符出现1一次以上的String s1 = "eajeifh121222awephffwef12312312312412312";String s2 = "aaaaabbbddadsf";System.out.println(s1.replaceAll(regex1, "*"));System.out.println(s2.replaceAll(regex2,"#"));}}

  4)将子串中符合规则的取出

  操作步骤:

        1 将正则表达式封装成对象

        2 将正则对象和要操作的字符串相关联

        3 关联后,获取正则匹配引擎

        4 通过引擎对符合规则的子串进行操作,比如取出

   实例


public class Demo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub        String s = "hou   tian    yao dabiian le ";        String regex = "\\b[a-z]+\\b";        //将规则封装成对象        Pattern pat = Pattern.compile(regex);        //匹配器的对象        Matcher mat = pat.matcher(s);                while(mat.find()){        System.out.println(mat.group());        //符合条件的子串在字符串中的索引            System.out.println(mat.start()+"...."+mat.end());        }        }}






0 0
原创粉丝点击