1.正则表达式
元字符 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母和数字 |
\s | 匹配任意空白符 |
\d ,[0-9] | 匹配数字 |
\b | 匹配 单词的开始或结束 |
\W | 匹配非单词字符(非数字,非字母) |
\S | 匹配非空白字符 |
\D | 匹配非数字 |
^ | 匹配字符串的开始 |
[a-zA-z] | 匹配字母 |
[^0-9] | 匹配非数字 |
$ | 匹配字符串的结束 |
分组:
(a(b©))
每一个括号为一个分组,分组从0开始,最外层是第0层,剩下的依次往里脱括号
String regex ="正则表达式";
String str = "";
//将正则表达式编译
Pattern p = Pattern.complie(regex);
//将字符串和正则表达式进行匹配
Matcher m = p.matcher(str);
m.find();
2.匹配模式
贪婪模式:
尽可能多的匹配,使用+
符号
勉强模式
使用是最短的匹配,符号?
3.正则表达式后向引用
正则表达式提供的后向允许使用()
对表达式分组之后使用$编号
方式引用表达式所匹配的内容
String phone = "13854678954".replaceAll("(1\\d{2})\\d{4}(\\d{4})","$1****$2");
4.泛型
jdk从1.5开始引入了泛型机制,泛型即参数化类型(将一种数据类型作为参数传递),泛型在声明时可以指定任意的名词,但是通常会使用单个字母表示,并且见名知意
泛型使用
//泛型类:
public class Test<T,S,U> {}
//泛型接口
public interface IManager<T> {}
//泛型方法
public static <T> T showInfo(T t){}
泛型通配符
java中虽然支持多态(父类引用指向子类对象),但是对于集合操作来说并不支持:
ArrayList<Object> list = new ArrayList<String>();//编译错误
?
:相当于? extends object
? extends T
:泛型上限? surper T
:泛型下限
泛型上限:
限定的是传入的数据必须是上限类型或者其子类,限定上限之后无法在增加数据(只出不进),从集合中取出的数据只能是上限类型
泛型下限:
传入的数据可以是当前类的对象也可以是其父类对象,限定下限之后可以添加数据(直进“不出”),获取的数据只能Object类型