日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java正则匹配的坑_java正则表达式入坑指南

發(fā)布時(shí)間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java正则匹配的坑_java正则表达式入坑指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在日常開發(fā)工作中,無論你使用的語言是java、python、shell、golang還是C#, 正則表達(dá)式是編程語言中幾乎繞不開的話題。有了它,可以幫你快速定位到符合條件的文本內(nèi)容。今天小編帶大家一起來學(xué)習(xí)下正則表達(dá)式,相信通過這篇文章的介紹,能為以后的工作提供一個更清晰的思路。

正則表達(dá)式初體驗(yàn)

首先給大家介紹一下正則表達(dá)式使用的類,在java.util.regex 包中主要包括以下三個類:

Pattern 類

pattern 對象是一個正則表達(dá)式的編譯表示。Pattern 類沒有公共構(gòu)造方法。要創(chuàng)建一個 Pattern 對象,你必須首先調(diào)用其公共靜態(tài)編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達(dá)式作為它的第一個參數(shù)。

Matcher 類

Matcher 對象是對輸入字符串進(jìn)行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構(gòu)造方法。你需要調(diào)用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。

PatternSyntaxException

PatternSyntaxException 是一個非強(qiáng)制異常類,它表示一個正則表達(dá)式模式中的語法錯誤。

接下來,通過兩個例子為大家演示正則表達(dá)式的使用。

使用正則表達(dá)式校驗(yàn)手機(jī)號是否合法:

例子輸出結(jié)果為:

電話字符串[18488888888]是否合法? [false]

電話字符串[14788888888]是否合法? [true]

除了可以幫助大家快速校驗(yàn)數(shù)據(jù)格式是否正確外,在使用正則表達(dá)式時(shí),我們還可以快速提取目標(biāo)格式的數(shù)據(jù)內(nèi)容,這個優(yōu)勢所借助的工具即是捕獲組。

捕獲組定義:把多個字符當(dāng)一個單獨(dú)單元進(jìn)行處理的方法,它通過對括號內(nèi)的字符分組來創(chuàng)建。

捕獲組是通過從左至右計(jì)算其開括號來編號。例如,在表達(dá)式((A)(B(C))),有四個這樣的組:

((A)(B(C)))

(A)

(B(C))

(C)

可以通過調(diào)用 matcher 對象的 groupCount 方法來查看表達(dá)式有多少個分組。groupCount 方法返回一個 int 值,表示matcher對象當(dāng)前有多個捕獲組。另外還有一個特殊的組(group(0)),它總是代表整個表達(dá)式。該組不包括在 groupCount 的返回值中。

下面的例子為大家演示通過捕獲組生成目標(biāo)字符串:

實(shí)例輸出結(jié)果為:

DSCS0001/20200113/1898888888820200113101638.mp3

通過以上兩個實(shí)例,我們可以清晰的看出正則表達(dá)式在數(shù)據(jù)的驗(yàn)證和提取目標(biāo)格式字符串的強(qiáng)大功能。

小福利

下面是小編為大家整理的一些在工作中常用的正則表達(dá)式,以期能幫助到大家。

匹配中文字符:

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 位的數(shù)字

System.out.println(Pattern.matches("^\\d{1,3}$", "123"));

密碼必須由字母和數(shù)字組成,且長度要在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")

匹配時(shí)分秒

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"));

網(wǎng)址匹配包含http、https、ftp協(xié)議

System.out.println(Pattern.matches("^(https?|ftp)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "http://www.bdqn.cn/"));

小結(jié)

今天這篇文章,通過兩個實(shí)例為大家詳細(xì)介紹了正則表達(dá)式在編程過程中的強(qiáng)大功能:

1. 校驗(yàn)數(shù)據(jù)格式是否正確

2. 提取目標(biāo)格式的字符串內(nèi)容

結(jié)合小編整理的一些作用廣泛的表達(dá)式,相信大家對于我們今天的主題正則表達(dá)式有了一個更為清晰的認(rèn)知。

怎么樣,你了解了么?歡迎和我們一起探討。

更多IT技術(shù)干貨,請關(guān)注課工場,和我們一起關(guān)注前沿技術(shù),快速提升。

總結(jié)

以上是生活随笔為你收集整理的java正则匹配的坑_java正则表达式入坑指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。