菜鳥先飛之JAVA_正則表示式
阿新 • • 發佈:2018-12-21
正則表示式的概述
是指一個用來描述或者匹配一系列符合某個語法規則的字串的單個字串。其實就是一種規則。
字元 x 字元 x \\ 反斜線字元 \0n 帶有八進位制值 0 的字元 n (0 <= n <= 7) \0nn 帶有八進位制值 0 的字元 nn (0 <= n <= 7) \0mnn 帶有八進位制值 0 的字元 mnn(0 <= m <= 3、0 <= n <= 7) \xhh 帶有十六進位制值 0x 的字元 hh
\uhhhh 帶有十六進位制值 0x 的字元 hhhh
\t 製表符 ('\u0009')
\n 新行(換行)符 ('\u000A')
\r 回車符 ('\u000D')
\f 換頁符 ('\u000C')
\a 報警 (bell) 符 ('\u0007')
\e 轉義符 ('\u001B')
\cx 對應於 x 的控制符
字元類 [abc] a、b 或 c(簡單類) [^abc] 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
預定義字元類 . 任何字元
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
Greedy 數量詞 X? X,一次或一次也沒有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次,但是不超過 m 次
匹配 public boolean matches(String regex)告知此字串是否匹配給定的正則表示式。 例: String regex = "[abc]{5,15}"; System.out.println("abcba".matches(regex));
切割 public String[] split(String regex)根據給定正則表示式的匹配拆分此字串。 例: String s = "qqq.www.eee"; String[] arr = s.split("\\.");
替換 public String replaceAll(String regex,String replacement)使用給定的 replacement 替換此字串所有匹配給定的正則表示式的子字串。 例: String s = "q1a2q3"; String regex = "\\d"; //\\d代表的是任意數字 String s2 = s.replaceAll(regex, "-");
分組 正則表示式的分組功能,捕獲組可以通過從左到右計算其開括號來編號。 例: String s = "qqqqqaaaaawwwwww"; String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一組中的內容
獲取 將正則規則進行物件封裝。 Pattern p = Pattern.compile("a*b"); 通過正則物件的matcher方法字串關聯,獲取要對字串操作的匹配器物件Matcher。 Matcher m = p.matcher("aaaaaaab"); 通過Matcher匹配器物件的方法對字串進行操作。 boolean b = m.matches(); 例: Pattern p = Pattern.compile("a*b"); //獲取到正則表示式 Matcher m = p.matcher("aaaaab"); //獲取匹配器 boolean b = m.matches(); //看是否能匹配,匹配就返回true System.out.println(b); System.out.println("aaaaab".matches("a*b")); //與上面的結果一樣
public boolean find()嘗試查詢與該模式匹配的輸入序列的下一個子序列。 public String group()返回由以前匹配操作所匹配的輸入子序列。
字元 x 字元 x \\ 反斜線字元 \0n 帶有八進位制值 0 的字元 n (0 <= n <= 7) \0nn 帶有八進位制值 0 的字元 nn (0 <= n <= 7) \0mnn 帶有八進位制值 0 的字元 mnn(0 <= m <= 3、0 <= n <= 7) \xhh 帶有十六進位制值 0x 的字元 hh
字元類 [abc] a、b 或 c(簡單類) [^abc] 任何字元,除了 a、b 或 c(否定)
預定義字元類 . 任何字元
Greedy 數量詞 X? X,一次或一次也沒有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次,但是不超過 m 次
匹配 public boolean matches(String regex)告知此字串是否匹配給定的正則表示式。 例: String regex = "[abc]{5,15}"; System.out.println("abcba".matches(regex));
切割 public String[] split(String regex)根據給定正則表示式的匹配拆分此字串。 例: String s = "qqq.www.eee"; String[] arr = s.split("\\.");
替換 public String replaceAll(String regex,String replacement)使用給定的 replacement 替換此字串所有匹配給定的正則表示式的子字串。 例: String s = "q1a2q3"; String regex = "\\d"; //\\d代表的是任意數字 String s2 = s.replaceAll(regex, "-");
分組 正則表示式的分組功能,捕獲組可以通過從左到右計算其開括號來編號。 例: String s = "qqqqqaaaaawwwwww"; String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一組中的內容
獲取 將正則規則進行物件封裝。 Pattern p = Pattern.compile("a*b"); 通過正則物件的matcher方法字串關聯,獲取要對字串操作的匹配器物件Matcher。 Matcher m = p.matcher("aaaaaaab"); 通過Matcher匹配器物件的方法對字串進行操作。 boolean b = m.matches(); 例: Pattern p = Pattern.compile("a*b"); //獲取到正則表示式 Matcher m = p.matcher("aaaaab"); //獲取匹配器 boolean b = m.matches(); //看是否能匹配,匹配就返回true System.out.println(b); System.out.println("aaaaab".matches("a*b")); //與上面的結果一樣
public boolean find()嘗試查詢與該模式匹配的輸入序列的下一個子序列。 public String group()返回由以前匹配操作所匹配的輸入子序列。