java--正則表達式
正則表達式概念:一個字符串,一個規則
String regex ="[1-9]\\d{4,14}"
str.matches(regex) 返回值類型boolean
java.util.regex下的Pattern類
單個字符類
[abc] []代表單個字符,表示a或b或c字符
[^abc] 除a/b/c外的任何字符
[a-zA-Z]表示範圍,兩頭的字母包括
[a-d[m-p]]並集
[a-z&&[def]]交集
[a-z&&[^bc]] = [ad-z]
[a-z &&[^m-p]]減去
預定義字符類
. 任意字符
\d =[0-9] // \表示轉義字符,如果想表示\d的話,需要\\d
\D [^0-9]非數字
\s 空白字符 [ \t\n\x0B\f\r] \ttable鍵水平制表符,\n換行 \r回車 匹配空格和table鍵的等
\S 非空白字符
\w 單詞字符[a-zA-Z_0-9]
\W 非單詞字符
數量詞 Greedy
X ? X一次或一次也沒有 註意:一次也沒有指得是X,也不能出現其他的""
X* X零次到多次
X+ X一次到多次
X{n} X出現n次
X{n,}x出現至少n次
X{n,m}x出現n-m次
註意:split分割時,如使用.分割,需要\\.
replaceall 正則表達式的替換功能
String s = "wo1ai2heima";
String regex = "\\d";
String s2 = s.replaceAll(regex,"");
正則表達式的分組功能
1.組零代表整個表達式
2.其他按照左括號分組
String regex = "(.)\\1(.)\\2" \\1第一組出現兩次 \\2第二組出現兩次
String regex = "(.)\\1+" +表示第一組出現一次到多次
String s = str.replaceAll("(.)\\1+","$1")$1表示第一組中的內容
Pattern 和Matcher概述
Pattern不能被繼承,其典型調用順序為:
Pattern p = Pattern.compile(String regex); 獲取正則表達式
Matcher m = p.matcher(String str) ; 獲取str的匹配器
boolean b = m.matches(); 看是否能匹配,匹配就返回true
上面三步驟等於 str.matches(regex)
上面的第一種方法看似是復雜的,但是其相較於第二種方法有更加實用的場景,如獲取字符串中的手機號碼等。
Pattern p = Pattern.compile(String regex); 獲取正則表達式
Matcher m = p.matcher(String str) ; 獲取str的匹配器
boolean b = m.find(); 看是否有匹配的子串,匹配就返回true
String s1= m.group();返回上次匹配的子串
while(m.find())
System.out.println(m.group); 獲取字符串中匹配的所有子串。
java--正則表達式