黑马程序员技术交流社区

标题: 正则表达式 [打印本页]

作者: 薛灵云    时间: 2015-8-27 10:07
标题: 正则表达式
1. 正则表达式

        Pattern类。正则表达式的编译表示形式。定义的是规则。
       
        (1):特殊字符
                x :字符 x ,任意字符代表其本身
                \\:反斜线
                \t:制表符
                \r:回车
                \n:换行

        (2):字符类
                [abc]:a,b或者c的任意一个。
                [^abc]:除了a,b,c以外的字符。
                [a-zA-Z]:包括了26个英文字母。
                [0-9]:包括了0-9这个10个数字字符。

        (3):预定义字符类
                .        任意字符
                \d        数字[0-9]
                \D        非数字[^0-9]
                \w        单词字符:[a-zA-Z_0-9]
                \W        非单词字符:[^\w]

        (4):边界匹配器
                ^        行的开头
                $        行的结尾
                \b        单词边界
                        单词边界匹配的是一个位置。这个位置是零宽度的。表示这个位置的一边是单词字符,另一边不是单词字符。字符串的开头或结尾。

        (5):Greedy 数量词
                x?        0次或1次
                x*        0次或多次
                x+        1次或多次
                x{n} 恰好n次
                x{n,} 至少n次
                x{m,n} 至少m次,但不能超过n次

2. 正则表达的功能:       
        1) 判断:
                public boolean matches(String regex)
                        -- 告知此字符串是否匹配给定的正则表达式。
                       
        2) 切割:
                public String[] split(String regex)
                        根据给定正则表达式的匹配拆分此字符串
                       
                记住:
                        (1)按任意个空格切割:
                                String regex = " +";       
                       
                        (2) 切割路径:
                                String path = "D:\\aaa\\bbb\\ccc.txt";
                                String regex = "\\\\";
               
                        (3) 叠词切割
                                String regex = "(.)\\1+";
                               
        3) 替换:
                String replaceAll(String regex, String newString)
                        -- 可以在newString参数中使用$对regex参数中的组进行引用。
                       
        4) 获取功能:
               
                a.通过Pattern类的静态方法compile(String regex),把正则表达式编译成模式对象。
                b.通过Pattern类的matcher(String str) 方法获得匹配器对象 Matcher
                c.调用匹配器对象 Matcher的方法:
                        判断 matchers() -- 整体匹配
                        获取:
                                boolean find() -- 判断是否有匹配的子串
                                String group() -- 获取匹配的子串
       
       
反射: reflect
       
        1) 获取字节码文件对象的三种方式:
                1) Object类中的getClass()
                2) 数据类型的静态属性。
                3) Class.forName(String className) -- 必须是全路径类名
               
        2) 获取构造方法并使用:Constructor
                获取方式:
                        获取公共的:
                                Constructor getConstructor(Class... parameterTypes)  // (String.class, int.class)
                                        -- 获取公共构造中指定参数类型的(公共构造中的一个)
                                Constructor[] getConstructors()
                                        -- 获取所有公共构造
                        获取所有的:
                                Constructor getDeclaredConstructor(Class... parameterTypes)
                                        -- 获取所有构造中指定参数类型的(所有构造中的一个)
                                Constructor[] getDeclaredConstructors()
                                        -- 获取所有构造
                               
                操作步骤:
                        获取字节码文件对象:
                                Class class = Class.forName(String className);
                       
                        通过构造器对象创建对象:
                                Object newInstance(Object... initargs)  // ("林青霞", 26)
               
                可变参数:
                        (数据类型... 变量名) -- 参数类型确定,但参数个数不确定的情况(当成数组来使用即可,不过长度可变了)
       
        3) 获取成员变量:Field
                获取方式:
                        获取公共的:
                                Field getField(String name)  
                                        -- 根据成员变量名称,获取指定的公共成员变量(公共成员变量中的一个)
                                Field[] getFields()  
                                        -- 获取所有的公共成员变量
                       
                        获取所有的:
                                Field getDeclaredField(String name)
                                        -- 根据成员变量名称,获取指定的成员变量(所有成员变量中的一个)
                                Field[] getDeclaredFields()
                                        -- 获取所有的成员变量
               
                操作步骤:
                        获取字节码文件对象:
                                Class class = Class.forName(String className);
                       
                        获取构造方法对象:
                                Constructor con = class.getConstructor(Class... parameterTypes)
                               
                        创建对象:
                                Object obj = con.newInstance();
               
                        获取成员变量对象:
                                Field f = class.getDeclaredField("name");
                       
                        取消java语言访问检查:
                                setAccessible(boolean flag)
                       
                        通过成员变量对象对成员变量赋值       
                                f.set(Object obj, Object value)
               
        4) 获取成员方法并使用:
                获取方式:
                        Method[] getMethods()
                                -- 获取所有公共方法,包括父类的。
                        Method getMethod(String name, Class<?>... parameterTypes)
                                -- 根据方法名和参数列表,获取指定的公共的方法。(公共的方法中的一个)
                               
                        Method[] getDeclaredMethods()
                                -- 获取所有本类的方法。
                        Method getDeclaredMethod(String name, Class<?>... parameterTypes)
                                -- 根据方法名和参数列表,获取指定的方法。(所有方法中的一个)
               
                操作步骤:
                        获取成员方法对象:
                        Method getDeclaredMethod("add", Object.class)
                       
                        // 设置访问权限
                        setAccessible(true);
                       
                        // 通过成员方法对象调用方法:
                        Object obj = m.invoke(obj, null);
       
       
       
       
       
       
       


作者: 僵尸舞    时间: 2015-9-17 23:19
赞一个支持,也攒攒HMB!!!
作者: 王鲁悦    时间: 2015-9-17 23:30
支持支持




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