一 預定義字符
注意: 任何預定義字符沒有加上數量詞都只能匹配一個字符
. 任意字符
\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方法查找,否則報錯