一 预定义字符
注意: 任何预定义字符没有加上数量词都只能匹配一个字符
. 任意字符
\d 0-9的数字 注:\有特殊含义所以一般写成\\d
\D 非数字 注:一般写成\\D
\s 空白字符
\S 非空白字符
\w 单词字符
\W 非单词字符
二 数量词
X? X一次或一次也没有 例:"1".matches("\\d?")
X* X零次或多次
X+ X一次或多次
X{n} X恰好n次
X{n,} X至少n次
X{n,m} X至少n次,但不超过m次
三 范围词
注意 : 范围词里不管内容有多长, 没有数量词配合只能匹配一个字符
[abc] a,b 或c
[^abc] 除了a,b,c的任意字符
[a-zA-z] 大写字母和小写字母
四 示例
匹配
//匹配固定电话 区号-主机号 区号: 首位0 长度:3-4 主机号:首位非0 长度;7-8
String regx = "0\\d{2,3}-[1-9]{6,7}"
切割
//根据重叠词切割字符串
String str = "好好学习天天向上";
String[] datas = str.split("(.)\\1+");
替换
//替换电话号码
String str = "如有需求联系他:13556082123"
String reg = "1[34578]\\d{9}";
str.replaceAll(reg,"******");
查找
五 正则分组
分组的目的是为了让正则的内容被复用起来,组号是从1开始。
((A)(B(C))) 要看有几组 就要看"("有几个组
第一组 : ((A)(B(C)))
第二组 : (A)
第三组 : (B(C))
第四组 : (C)
\1引用第一组所匹配到的内容
示例
//根据重叠词切割字符串
String str = "好好学习天天向上";
String[] datas = str.split("(.)\\1+");
六 正则对象
查找
Pattern p = Pattern.compile("正则");
Matcher m = p.matcher("aaaabbbb");//获取匹配器Matcher
boolean b = m.matches();
//匹配器要使用到的方法:
1 find() 通知匹配器去匹配字符串,查找符合规则的字符串。
2 group() 获取符合规则的子串,使用group方法的时候一定要先调用find方法查找,否则报错