java正则匹配的坑_java正则表达式入坑指南
在日常開發工作中,無論你使用的語言是java、python、shell、golang還是C#, 正則表達式是編程語言中幾乎繞不開的話題。有了它,可以幫你快速定位到符合條件的文本內容。今天小編帶大家一起來學習下正則表達式,相信通過這篇文章的介紹,能為以后的工作提供一個更清晰的思路。
正則表達式初體驗
首先給大家介紹一下正則表達式使用的類,在java.util.regex 包中主要包括以下三個類:
Pattern 類
pattern 對象是一個正則表達式的編譯表示。Pattern 類沒有公共構造方法。要創建一個 Pattern 對象,你必須首先調用其公共靜態編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達式作為它的第一個參數。
Matcher 類
Matcher 對象是對輸入字符串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構造方法。你需要調用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。
PatternSyntaxException
PatternSyntaxException 是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤。
接下來,通過兩個例子為大家演示正則表達式的使用。
使用正則表達式校驗手機號是否合法:
例子輸出結果為:
電話字符串[18488888888]是否合法? [false]
電話字符串[14788888888]是否合法? [true]
除了可以幫助大家快速校驗數據格式是否正確外,在使用正則表達式時,我們還可以快速提取目標格式的數據內容,這個優勢所借助的工具即是捕獲組。
捕獲組定義:把多個字符當一個單獨單元進行處理的方法,它通過對括號內的字符分組來創建。
捕獲組是通過從左至右計算其開括號來編號。例如,在表達式((A)(B(C))),有四個這樣的組:
((A)(B(C)))
(A)
(B(C))
(C)
可以通過調用 matcher 對象的 groupCount 方法來查看表達式有多少個分組。groupCount 方法返回一個 int 值,表示matcher對象當前有多個捕獲組。另外還有一個特殊的組(group(0)),它總是代表整個表達式。該組不包括在 groupCount 的返回值中。
下面的例子為大家演示通過捕獲組生成目標字符串:
實例輸出結果為:
DSCS0001/20200113/1898888888820200113101638.mp3
通過以上兩個實例,我們可以清晰的看出正則表達式在數據的驗證和提取目標格式字符串的強大功能。
小福利
下面是小編為大家整理的一些在工作中常用的正則表達式,以期能幫助到大家。
匹配中文字符:
System.out.println(Pattern.matches("[\u4e00-\u9fa5]", "好"));
匹配Email地址
System.err.println(Pattern.matches("\\w[-\\w.+]*@([A-Za-z0-9][A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", "hello2020@qq.com"));
m-n 位的數字
System.out.println(Pattern.matches("^\\d{1,3}$", "123"));
密碼必須由字母和數字組成,且長度要在6-12位之間
System.out.println(Pattern.matches("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$", "123hello456"));
一年的12個月(01~09和1~12) : ^(0?[1-9]|1[0-2])$
Pattern.matches("^((0?[1-9])|(1[0-2]))$", "11")
匹配時分秒
System.out.println(Pattern.matches("([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]", "11:10:11"));
IP地址格式
System.out.println(Pattern.matches("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}", "192.168.21.37"));
網址匹配包含http、https、ftp協議
System.out.println(Pattern.matches("^(https?|ftp)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "http://www.bdqn.cn/"));
小結
今天這篇文章,通過兩個實例為大家詳細介紹了正則表達式在編程過程中的強大功能:
1. 校驗數據格式是否正確
2. 提取目標格式的字符串內容
結合小編整理的一些作用廣泛的表達式,相信大家對于我們今天的主題正則表達式有了一個更為清晰的認知。
怎么樣,你了解了么?歡迎和我們一起探討。
更多IT技術干貨,請關注課工場,和我們一起關注前沿技術,快速提升。
總結
以上是生活随笔為你收集整理的java正则匹配的坑_java正则表达式入坑指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江西省2019计算机二级报名日期,202
- 下一篇: C++学习之路 | PTA乙级—— 10