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);
|
|