1.正則規則:
1.String regex = "[1-9]" 表示單個字符的取值范圍是 1~9,注意是單個字符的取值范圍
2.String regex = "\\d" "\d"表示單個字符的類型是整型數字,注意是單個字符的取值范圍
String regex = "\\D" "\D"表示單個字符的類型是 非整型數字,"\D" 和 "\d" 是反義
3.String regex = "\\d{1, 9}" {最少出現次數, 最多出現次數} 表示 最少出現1個 最多出現9個 的字符是整型數字
String regex = "\\d{1}" {必須出現次數} 表示 必須出現1個 的字符是整型數字
String regex = "\\d{1,}" {至少出現次數} 表示 必須至少出現1個 的字符是整型數字
4.String regex = "[abc]" 表示單個字符的取值范圍是a~c,注意是單個字符的取值范圍
5.String regex = "[^abc]" 表示單個字符的取值范圍不在a~c,注意是單個字符的取值范圍
6.String regex = "[a-zA-Z]" 表示單個字符的取值范圍不在a~z 或 A~Z,注意是單個字符的取值范圍
7.String regex = "[a-z[A-Z]]"(並集) "[a-z[A-Z]]" 等同於 "[a-zA-Z]",表示單個字符的取值范圍不在a~z 或 A~Z
8.String regex = "[a-z&&[def]]"(交集) 表示單個字符的取值為 d 或 e 或 f
9.String regex = "[a-z&&[^def]]"(減去) 表示單個字符的取值范圍為a~z,但不包括 d 或 e 或 f
10.String regex = "[a-z&&[d-f]]"(減去) 表示單個字符的取值范圍為a~z,但不在d~f范圍之間
11.String regex = "..." "."表示單個字符匹配任意一個字符值
12.String regex = "\\." "\\."表示轉義為普通字符"." ;
該轉移之后普通字符"." 不再具有 匹配任意一個字符值的作用
12.String regex = "\\s" "\s"表示單個字符匹配空白字符
String regex = "\\S" "\S"表示單個字符不能匹配空白字符;"\S" 等同於 "^\s";
13. String regex = "\\w" "\w"表示單個字符匹配a~z 或 A~Z或 0~9;"\w" 等同於 [a-zA-Z0-9]
String regex = "\\W" "\W"表示單個字符不能匹配a~z 或 A~Z或 0~9;"\W" 等同於"^\w"
14.String regex = "A?" 表示該字符A 必須出現 0次 或 1次
15.String regex = "A*" 表示該字符A 必須出現 0次 或 多次
16String regex = "A+" 表示該字符A 必須出現 1次 或 多次
2.group分組:
1.String regex = "((A)(B(C)))":第一個分組是整體((A)(B(C))),第二個分組是(A),第三個分組是(B(C)),第四個分組是(C)
String regex = "(A)\\1":\1 表示 引用(代表)第一個分組(A)
例子:
//(.)\\1+:\1 表示 引用的第一個分組(.)匹配出來的數據 可以是 一個或多個,即 (.)\\1+ 相當於 "我+"
String regex = "(.)\\1+"
String str = "我我我"
boolean b = str.matches(regex)//true
------------------------------------------------------String str = "我我我愛愛愛渚渚渚"
// "(.)\\1+":"\1" 表示 引用的第一個分組"(.)" 匹配出來的數據,即 "(.)\\1" 匹配出 "我" ,"(.)\\1+" 匹配出 疊詞 "我+"。
// 因為后面執行 replaceAll 所以會進行 多次匹配,所以最終"(.)\\1+" 會進行多次匹配,得出 疊詞 "我+"、"愛+"、"渚+"。
String regex = "(.)\\1+"// replaceAll(regex, "$1")表示把字符串中 所有的符合正則規則的數據 都被替換為 "$1"引用的第一個分組的數據。
// "$1" 和 "\1" 意思一樣, 都表示 引用 第一個分組"(.)" 匹配出來的數據 "我"、"愛"、"渚"。
// str.replaceAll(regex, "$1"):表示把 "(.)\\1+"替換為 "$1",即 "我+"、"愛+"、"渚+" 被分別替換為 "我"、"愛"、"渚"
// regex: "(.)\\1+" 匹配出 疊詞 "我+"、"愛+"、"渚+";
// "$1"和 "\1" 都匹配出 "我"、"愛"、"渚"
String newStr = str.replaceAll(regex, "$1") //newStr 為 "我愛渚"
3.Pattern正則表達式對象:
1.Pattern p = Pattern.compile(正則表達式字符串):把 正則表達式字符串 封裝為 Pattern正則表達式對象p
2.Matcher m = p.matcher(String str“需要進行匹配的”字符串):
Pattern正則表達式對象調用matcher方法 去匹配 “需要進行匹配的”字符串,返回匹配正確出來的結果m;
"Matcher m" 可以包含匹配出來的一個或多個數據;
3.m.find():判斷 匹配出來的結果數據"Matcher m" 是否為空
4.String str = m.group():
每次只從匹配出來的結果數據"Matcher m"中 取出一個數據,而"Matcher m" 可以包含匹配出來的一個或多個匹配到的數據,
所以需要循環執行 while(m.find()) 每次都判斷結果數據"Matcher m"中是否還存在數據,如返回true,
說明剩余有數據可取出,然后執行 String str = m.group() 取出 結果數據"Matcher m"中的 一個數據,繼續循環判斷。