黑马程序员技术交流社区

标题: 正则表达式知识点总结 [打印本页]

作者: 高盖茨    时间: 2015-12-7 22:55
标题: 正则表达式知识点总结
正则表达式:
        概述:符合某种正确规则的表达式。
        理解:正则表达式就是一个字符串。

        String类中的方法:
                public boolean matches(String regex);  //判断字符串与给定的 正则表达式是否匹配。

        校验QQ:
                规则:必须是数字,5-15位,0不能开头。
                正则:[1-9]\\d{4,14}

        分类:
                字符类
                        [abc]                abc其中的任意一个字符
                        [^abc]                除了abc之外的,任意一个字符
                        [a-zA-Z]        任意一个字母
                        [0-9]                任意的一个数字

                预定义字符类
                        .        任意字符
                        \d        任意数字
                        \w        单词字符(所有的英文字母,数字以及下划线)

                        \W        非单词字符(一般是用来匹配特殊符号的)

                数量词
                        X?                一次或者一次也没有
                        X*                零次 到 多次
                        X+                一次 到 多次
                        X{n}        恰好n次
                        X{n,}        至少n次
                        X{n,m}        至少n次,最多不能超过m次。

       
        切割功能:
                public String[] split(String regex);        //注意,如果想要按照.来切割,不能直接写.,而是写\\.
                我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”   
                思路:
                        1、通过切割,获取到字符串中的每个 数字形式的字符串。("91","27","46","38","50")
                        2、把切割后的字符串转成其对应的 int类型,用int[]来存储。
                                关键点:
                                        int[]的长度是:切割后的字符串数组的长度
                        3、对int[]进行排序。
                        4、把int[]数组 拼接成 字符串。

        替换功能:
                public String replaceAll(String regex,String replacement)
                        使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
                        理解:
                                用replacement来替换,字符串中所有能跟regex匹配上的内容。
的字符连续出现两次或以上,就称为叠词。

        分组功能:
                从左至右计算其开括号(左括号)的形式来进行分组,每一个开括号就是一组。
                (A(B(C)))

                思考:请按照叠词切割: "sdqqfgkkkhjppppkl"               
                        叠词:相同

                掌握:
                        按照叠词切割的规则:        (.)\\1+
                       
                        叠词切割保留一个:
                                字符串对象名.replaceAll( "(.)\\1+" , "$1");                //$1代表的是 获取到组1里边的内容

                        中午做:
                                怎么切割路径?
                                        String str = "C:\\HangGe Others File\\Office Software\\jdk1.7.0_51\\bin";


        Pattern和Matcher:
                 Pattern p = Pattern.compile("a*b");                        //获取到正则表达式(对象)
                 Matcher m = p.matcher("aaaaab");                               
                        //获取到匹配器(根据给定的字符串,获取到对应的匹配器对象)
                 boolean b = m.matches();        //通过匹配器对象调用meatches()方法,对字符串和正则进行校验

                //上边三行相当于:  sop( "aaaaab".matcher(a*b) );
       
                练习题:找到字符串中的所有手机号
                        String str = "我的手机号是13161290000,我以前的手机号是15037360000,我对象的手机号是18710100000"
                Matcher类中的两个方法:
                        public boolean find();                //根据正则去找,字符串中是否有能与正则匹配的 元素
                        public String group();                //获取到刚才找到的那个元素。

        总结;
                正则表达式在实际开发中,我们一般不会自己写,因为你自己写的别人也不敢用,所以一般是在网上找的,
                我的要求是:能用咱们上午讲的内容,去看懂别人写的规则。
                                       





作者: fzh945    时间: 2015-12-8 20:54
学习了,正则表达式要好好学学
作者: 迷茫不堪的年纪    时间: 2015-12-8 21:01
这个最好熟练一下!因为后续用的不少!
作者: 迷茫不堪的年纪    时间: 2015-12-8 21:07
直接笔记复制 - - 要被收拾 哈哈
作者: 臭小子    时间: 2015-12-8 21:42
看懂即可,这个东西记起来太难受了
作者: Rocky_zhang    时间: 2015-12-8 22:05
讲那天,就没有仔细听。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2