Java 正则表达式的用法与实例
生活随笔
收集整理的這篇文章主要介紹了
Java 正则表达式的用法与实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄結構
- 一、簡介
- 二、相關符號
- 1)單個符號
- 2)次數符號
- 3)快捷字符
- 三、常用的正則表達式
- 四、正則表達式的常見操作
- 1)匹配
- 2)切割
- 3)替換
- 4)獲取
- 五、郵箱格式驗證實例
- 六、正則表達式在線生成代碼工具
一、簡介
正則表達式,又稱規則表達式(Regular Expression,在代碼中常簡寫為regex、regexp或RE)。描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
二、相關符號
1)單個符號
| ^ | 匹配輸入字符串開始的位置 |
| $ | 匹配輸入字符串結尾的位置 |
| . | 匹配單個任意字符,如Ja.a,可以匹配Java但不能匹配Javva |
| 中括號[] | 匹配單個字符,但只能匹配括號中指定的字符,如ja[vr]a,jara合法 |
| | 符號 | 或,和中括號[]類似,匹配指定的字符,但可以不是單個,如r(a|b|c|dd)n |
| ^符號 | 表示否,如[^0—9]即不匹配數字 |
2)次數符號
以下符號是匹配其前面的子表達式出現的次數:
| * | 0次或者多次 |
| + | 1次或者多次 |
| ? | 0次或者1次 |
| {n} | 剛好n次 |
| {n,} | 至少匹配n次 |
| {n,m} | n次到m次 |
舉個栗子:
o{2}與"Bob"中的"o"不匹配,但與"food"中的兩個"o"匹配。 o{1,}等效于o+ o{0,}等效于o* o{0,1}'等效于 o?3)快捷字符
| \d | 匹配一個數字字符,等價于 [0-9] |
| \D | 匹配一個非數字字符,等價于 [^0-9] |
| \w | 匹配字母、數字、下劃線,等價于[A-Za-z0-9_] |
| \W | 等價于[^A-Za-z0-9_] |
| \s | 空字符,只可以匹配一個空格、制表符、回車符、換頁符,不可以匹配自己輸入的多個空格 |
| \S | 匹配任何非空白字符 |
更多字符可以參考菜鳥教程
三、常用的正則表達式
整理一些常見的正則表達式如下:
- 漢字:^[\u4e00-\u9fa5]{0,}$
- 長度為3-20的所有字符:^.{3,20}$
- Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
- 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
- InternetURL:[a-zA-z]+://[^\s]* 或 ^https://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
- 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
- IP地址:\d+.\d+.\d+.\d+
- 中國郵政編碼:[1-9]\d{5}(?!\d)
- 騰訊QQ號:[1-9][0-9]{4,}
其余的表達式可以參考這里
四、正則表達式的常見操作
java中的正則表達式,建議多研究pattern類 和 matcher類
import java.util.regex.Matcher; import java.util.regex.Pattern;1)匹配
方法:
- public boolean matches(String regex)
舉例:
public static void checkQQ(){String qq = "123456789abc";String regex = "[1-9]\\d{4,14}";boolean flag = qq.matches(regex);if(flag)System.out.println(qq+"合規");elseSystem.out.println(qq+"不合規");} //不合規2)切割
方法:
- public String[] split(String regex)
舉例:
public static void splitTest(){String str = "摸 魚 寫 博 客";//按照多個空格來進行切割String reg = " +";String[] arr = str.split(reg); System.out.println(arr.length);//用加強for循環遍歷for(String s : arr){System.out.println(s);}}3)替換
方法:
- public String replaceAll(String regex,String replacement)
- replaceFirst 替換首次匹配,replaceAll 替換所有匹配
舉例:
public static void replaceAllTest(){String str = "java123456Regular6543210Expression";//注意String regex = "\\d";和\\d{5,}的區別String regex = "\\d{5,}";str = str.replaceAll(regex,"#");System.out.println(str);} // java#Regular#Expression4)獲取
方法:
- 將正則表達式封裝成對象。
- 讓正則對象和要操作的字符串相關聯。
- 關聯后,獲取正則匹配引擎。
- 通過引擎對符合規則的子串進行操作,比如取出。
舉例:
public static void getTest(){String str = "mo yu xie bo ker";String regex = "\\b[a-z]{3}\\b";//匹配只有三個字母的單詞//將規則封裝成對象。Pattern p = Pattern.compile(regex);//讓正則對象和要作用的字符串相關聯。獲取匹配器對象。Matcher m = p.matcher(str);//將規則作用到字符串上,并進行符合規則的子串查找。boolean b = m.find();while(b){//獲取匹配后結果。System.out.println(m.group());// start() 字符的開始下標(包含)//end() 字符的結束下標(不包含)System.out.println(m.start()+"...."+m.end()); }}五、郵箱格式驗證實例
以常見的郵箱格式為例:
- 由a~z的英文字母(不區分大小寫)開頭
- 可由英文字母、0~9的數字、點、減號或下劃線組成
- @左側長度為1~20個字符
- 不能以點、減號結尾
代碼實現:
public static boolean isValidEmail(String email) {if ((email != null) && (!email.isEmpty())) {//定義郵箱格式的正則表達式String regex = "^(\w+([-.][A-Za-z0-9]+)*){1,20}@\w+([-.][A-Za-z0-9]+)*\.\w+([-.][A-Za-z0-9]+)*$";//返回格式驗證結果return Pattern.matches(regex, email);}return false;}六、正則表達式在線生成代碼工具
懶人直接走這兒:正則表達式在線生成代碼工具
寫完剛好五點半,下班了伙計們!
總結
以上是生活随笔為你收集整理的Java 正则表达式的用法与实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么用spss做冗余分析_【攻略】手把手
- 下一篇: 计算机统计分析spss试卷,《SPSS计