天天看點

Java正規表達式(一看就懂)

  • 💂 個人首頁:​​陶然同學​​
  • 🤟 版權:本文由【陶然同學】原創需要轉載請聯系部落客
  • 💬 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)和訂閱專欄哦
  • 💅想尋找共同成長的小夥伴,請點選【​​Java全棧開發社群​​】

它來了!!!

Java正規表達式(一看就懂)

        看了熱榜正規表達式都上榜了目前正規表達式榜一是Python的 經過這幾天嘔心瀝血不眠不休 終于今天Java的正規表達式它來了 還有練習題 耗時9981個小時 都是幹貨 趕緊收藏起來!!!!

1.概念

正規表達式:正确規則的表達式 

通常用來檢測字元串是否符合某規則、根據某規則切分字元串 或 替換符合規則的文本 

例如: 

檢查校驗字元串中的 QQ 号是否如何如下規則: 

 ①必須為 5~15 位數字 

 ②不能以 0 開頭 

 若使用之前代碼: 

Java正規表達式(一看就懂)

以上要求就可以變成一個正規表達式:[1-9][0-9]{4,14} 

通過正規表達式,我們就可以檢查字元串中的 QQ 号是否符合要求了。

2.字元串正則的常用方法

舉例:校驗手機号碼 

 1:要求為 11 位數字 

2:第 1 位為 1,第 2 位為 3、4、5、7、8 中的一個,後面 9 位為 0 到 9 之間的任意數字。 

代碼示範: 

 String phone = "18810022666"; 

 String regex = "1[34578][0-9]{9}"; 

 boolean flag = phone.matches(regex); 

方法名  描述 
boolean matches(String regex) 目前字元串是否比對給定的正規表達式 
String replaceAll(String regex,String replacement)

使用 replacement 替換目前字元串中所有符号正則表

達式的内容 

String[] split(String regex) 根據給定的正規表達式拆分目前字元串 

練習: 

 1、

舉例:校驗 qq 号碼. 

 1:要求必須是 5-15 位數字 

 2:0 不能開頭 

代碼示範: 

 String qq = "604154942"; 

 String regex = "[1-9][0-9]{4,14}"; 

 boolean flag2 = qq.matches(regex); 

2、

舉例:校驗手機号碼 

 1:要求為 11 位數字 

2:第 1 位為 1,第 2 位為 3、4、5、7、8 中的一個,後面 9 位為 0 到 9 之間的任意數字。 

代碼示範: 

 String phone = "18810022666"; 

 String regex = "1[34578][0-9]{9}"; 

 boolean flag = phone.matches(regex); 

3、

舉例:将字元串中的數字全部替換成!号 

 String str = "1a2b3c4d"; 

 str = str.replaceAll("\\d", "!"); 

 System.out.println(str); 

4、 

//根據空格切割字元串 

String str = "我 很 帥"; 

String[] arr = str.split(" "); 

for(int i=0;i<arr.length;i++){ 

 System.out.println(arr[i]); 

}

5、注意:.的正則寫法必須為\\. 

//根據.切割 IP 位址 

String str = "192.168.11.88"; 

String[] arr = str.split("\\."); 

for(int i=0;i<arr.length;i++){ 

 System.out.println(arr[i]); 

是以這些練習題你都學廢了嘛

Java正規表達式(一看就懂)

3.常見正規表達式

表達式  描述
^[a-z0-9_-]{3,16}$ 使用者名 
^[a-z0-9_-]{6,18}$  密碼 
^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$ 電子郵箱 
[\u4e00-\u9fa5] 比對中文字元的正規表達式 

練習: 

1、從控制台輸入一個字元串。使用正則來對字元串進行一系列操作: 

 ①判斷字元串是否是一個合格的使用者名 

 ②将字元串中的數字用”#”号替代. 數字的正則:[0-9] 或者 \\d 

 ③根據”#”号将字元串切割成字元串數組并周遊展示 

4.正規表達式-參考附錄

參照幫助文檔,在 Pattern 類中有正規表達式的的規則定義,正規表達式中明确區分大小寫字母。我們

來學習文法規則。

4.1規則

規則:x 

含義:代表的是字元 x 

例如:比對規則為 "a",那麼需要比對的字元串内容就是 ”a”

Java正規表達式(一看就懂)

規則:\\\\ 

含義:代表的是斜線字元'\\' 

例如:比對規則為"\\\\" ,那麼需要比對的字元串内容就是 ”\\” 

Java正規表達式(一看就懂)

規則:\\t 

含義:制表符 

例如:比對規則為"\\t" ,那麼對應的效果就是産生一個制表符的空間

Java正規表達式(一看就懂)

規則:\\n 

含義:換行符 

例如:比對規則為"\\n",那麼對應的效果就是換行,光标在原有位置的下一行 

Java正規表達式(一看就懂)

規則:\\r 

含義:回車符 

例如:比對規則為"\\r",那麼對應的效果就是回車後的效果,光标來到下一行行首 

Java正規表達式(一看就懂)

規則:[abc] 

含義:代表的是字元 a、b 或 c 

例如:比對規則為"[abc]",那麼需要比對的内容就是字元 a,或者字元 b,或字元 c 的一個 

Java正規表達式(一看就懂)

規則:[^abc] 

含義:代表的是除了 a、b 或 c 以外的任何字元 

例如:比對規則為"[^abc]",那麼需要比對的内容就是不是字元 a,或者不是字元 b,或不是字元

c 的任意一個字元

Java正規表達式(一看就懂)

規則:[a-zA-Z] 

含義:代表的是 a 到 z 或 A 到 Z,兩頭的字母包括在内 

例如:比對規則為"[a-zA-Z]",那麼需要比對的是一個大寫或者小寫字母

Java正規表達式(一看就懂)

規則:[0-9] 

含義:代表的是 0 到 9 數字,兩頭的數字包括在内 

例如:比對規則為"[0-9]",那麼需要比對的是一個數字 

Java正規表達式(一看就懂)

規則:[a-zA-Z_0-9] 

含義:代表的字母或者數字或者下劃線(即單詞字元) 

例如:比對規則為" [a-zA-Z_0-9] ",那麼需要比對的是一個字母或者是一個數字或一個下滑線

Java正規表達式(一看就懂)

規則:. 

含義:代表的是任何字元 

例如:比對規則為" . ",那麼需要比對的是一個任意字元。 

Java正規表達式(一看就懂)

規則:\\d 

含義:相當于[0-9]。代表的是 0 到 9 數字,0 和 9 包括在内。 

例如:比對規則為"\\d ",那麼需要比對的是一個數字

Java正規表達式(一看就懂)

規則:\\w 

含義:相當于[a-zA-Z_0-9]。代表的字母或者數字或者下劃線 

例如:比對規則為"\\w ",,那麼需要比對的是一個字母或者是一個數字或一個下滑線 

Java正規表達式(一看就懂)

4.2邊界比對器(以x開頭或結尾)

邊界比對器:^ 

含義:代表以某些内容開頭 

Java正規表達式(一看就懂)

邊界比對器:$ 

含義:代表以某些内容結尾 

Java正規表達式(一看就懂)

邊界比對器:\\b 

含義:代表的是單詞邊界。 

注意:不能單獨使用,幾乎不使用 

例如:比對規則為"\\b[abc]\\b",那麼代表的是字母 a 或 b 或 c 的左右兩邊需要的是非單詞字元

([a-zA-Z_0-9]) 

String regex = "\\b[a]\\b"; 

 String str = "a"; 

 booleanflag = str.matches(regex);

4.3數量詞

數量詞:X? 

含義:代表的是 X 出現 0~1 次 

例如:比對規則為"a?",那麼需要比對的内容是一個字元 a,或者一個 a 都沒有 

Java正規表達式(一看就懂)

數量詞:X* 

含義:代表的是 X 出現 次數≥0 

例如:比對規則為"a*",那麼需要比對的内容是多個字元 a,或者一個 a 都沒有 

Java正規表達式(一看就懂)

數量詞:X+ 

含義:代表的是 X 出現 次數≥1 

例如:比對規則為"a+",那麼需要比對的内容是多個字元 a,或者一個 a 

Java正規表達式(一看就懂)

數量詞:X{n} 

含義:代表的是 X 出現 次數= n 

例如:比對規則為"a{3}",那麼需要比對的内容是 3 個字元 a  

Java正規表達式(一看就懂)

數量詞:X{n,} 

含義:代表的是 X 出現 至少 n 次 

例如:比對規則為"a{3, }",那麼需要比對的内容是最少有 3 個字元 a 

Java正規表達式(一看就懂)

數量詞:X{n,m} 

含義:代表的是 X 出現至少 n 次,但是不超過 m 次 

例如:比對規則為"a{5,8}",那麼需要比對的内容是有 5 個字元 a 到 8 個字元 a 之間 

Java正規表達式(一看就懂)

4.4邏輯運算符

邏輯運算符:XY 

含義:代表的是 X 後緊跟着 Y 

例如:比對規則為"ab",那麼需要比對的字元串内容就是 ”ab” 

Java正規表達式(一看就懂)

邏輯運算符:X|Y 

含義:代表的是 X 或 Y 

例如:比對規則為"a|b",那麼需要比對的字元串内容就是 ”a”或”b” 

Java正規表達式(一看就懂)

邏輯運算符:(X) 

含義:代表的是()括号内的資料作為一個整體出現 

例如:比對規則為"(hello)+",那麼需要比對的内容是組内資料要出現多次,如”hellohellohello”;

或者組内資料出現一次,如”hello”。 

Java正規表達式(一看就懂)

寫在最後

        我們的Java正規表達式就結束了 歡迎大家添加部落客交流 練習過程中遇到問題也可以提供支援 如果需要學習資料 部落客也可以推薦

        最後 如果覺得文章對您有幫助 請給部落客點贊、收藏、關注 部落客會不斷推出更多優質文章!