持續(xù)更新通俗易懂的技術(shù)知識(shí),為您護(hù)航充電!本文章節(jié)內(nèi)容
本文將對(duì)正則表達(dá)式進(jìn)行完整的介紹,以通俗易懂的語言對(duì)正則表達(dá)式的每個(gè)字符功能進(jìn)行詳細(xì)解釋并通過具體示例進(jìn)行補(bǔ)充說明,旨在讓廣大讀者朋友們迅速掌握正則表達(dá)式這項(xiàng)工作技能并加以出色的運(yùn)用,助力讀者朋友們?cè)谀_本語言(Python、JavaScript等)盛行的互聯(lián)網(wǎng)時(shí)代脫穎而出! 正則表達(dá)式 一、神奇的正則表達(dá)式是什么?為讓讀者朋友們先對(duì)正則表達(dá)式有個(gè)大致的概念,本節(jié)我們將通過一個(gè)非常簡(jiǎn)單的示例來解釋正則表達(dá)式到底是什么?如:
從上例中可以看出,正則表達(dá)式其實(shí)就是一個(gè)描述一種字符串元素組成的符號(hào)表達(dá)式,字符串只有符合這種格式才是正確的,可以實(shí)現(xiàn)一種過濾邏輯功能! 正則表達(dá)式雖然描述的是一種字符串元素組成的表達(dá)式,但在實(shí)際編程應(yīng)用中是以正則表達(dá)式描述的字符串格式來匹配查找對(duì)應(yīng)字符串的。正則表達(dá)式可用于各種字符串的檢查、驗(yàn)證、查找、提取等程序功能開發(fā),如檢查身份證號(hào)、密碼、賬戶名等場(chǎng)合! 正則表達(dá)式 下面我們將對(duì)正則表達(dá)式的所有符號(hào)及其功能進(jìn)行詳細(xì)的講解,保證讀者朋友們能夠看懂正則表達(dá)式并編寫簡(jiǎn)單的正則表達(dá)式,待大家融會(huì)貫通之后結(jié)合擴(kuò)展正則符號(hào),編寫設(shè)計(jì)復(fù)雜且具有強(qiáng)大功能的正則表達(dá)式也將不在話下! 神奇的正則表達(dá)式 正則表達(dá)式是一種由各種符號(hào)組成的邏輯公式,本文將把正則符號(hào)分為三大類:普通元字符、特殊字符、擴(kuò)展表示法字符。下面將介紹第一類:正則表達(dá)式中的普通元字符! 二、正則符號(hào)詳解之普通元字符普通元字符只有十多個(gè),考慮到理解難度問題,我們將對(duì)每個(gè)元字符以通俗易懂的語言進(jìn)行再解釋,并結(jié)合多個(gè)示例再說明,讓讀者朋友們能夠理解更深刻。先來看看正則表達(dá)式中的普通元字符有哪些?如下圖: 普通元字符集 先來看普通元字符功能與示例: ▲元字符1: value—表示與value字面字符一致的查找功能,如
▲元字符2:regex1|regex2—表示正則表達(dá)式regex1或regex2,如
▲元字符3:.(點(diǎn))—表示查找除空格和空行之外的任何單個(gè)單字符,如字母,數(shù)字,符號(hào)等等 ▲元字符4:^ —匹配查找字符串起始部分,如
▲元字符5:$ —匹配查找字符結(jié)尾部分,如
▲元字符6:* —在*前的第一個(gè)正則表達(dá)式表示的字符至少出現(xiàn)0次以上,如
▲元字符7: —在 前的第一個(gè)正則表達(dá)式表示的字符至少出現(xiàn)1次以上,如
▲元字符8:? —在?前的第一個(gè)正則表達(dá)式表示的字符出現(xiàn)0次或1次 ▲元字符9:{N} —在{N}前的第一個(gè)正則表達(dá)式表示的字符出現(xiàn)N次,如
▲元字符10:{X,Y} —在{X,Y}前的第一個(gè)正則表達(dá)式表示的字符出現(xiàn)X到Y(jié)次,如
▲元字符11:[...] —匹配查找...中的任意單個(gè)字符,如
▲元字符12:[p-q] —范圍描述,匹配查找p-q范圍中任意單個(gè)字符,如
▲元字符13:[^...] —非描述符,匹配查找不屬于...表示的任意單個(gè)字符,如
▲元字符14:(...) —一個(gè)封閉的正則表達(dá)式,如
對(duì)于上面的元字符及其功能,讀者朋友們可能還是不清楚具體怎么使用,我們舉個(gè)實(shí)際編程應(yīng)用中的例子為大家說明。要求:編寫程序檢查用戶輸入的內(nèi)容是否是純數(shù)字,下圖是編程解決方案:
正則表達(dá)式檢查數(shù)字 三、正則符號(hào)詳解之特殊字符正則表達(dá)式的第二類正則符號(hào)—特殊字符,可以理解為簡(jiǎn)潔版的普通元字符,常見的特殊字符有: 以下是文字描述,便于讀者復(fù)制保存: ▲特殊字符1:\d —表示匹配查找單個(gè)數(shù)字字符,等價(jià)于[0-9] ▲特殊字符2:\D —表示不匹配查找單個(gè)數(shù)字字符,等價(jià)于[^0-9] ▲特殊字符3:\w —表示匹配查找單個(gè)字母或數(shù)字字符,等價(jià)于[a-zA-Z0-9] ▲特殊字符4:\W —表示不匹配查找單個(gè)字母或數(shù)字字符,等價(jià)于[^a-zA-Z0-9] ▲特殊字符5:\b —表示匹配查找單詞(字符到空格直接的字符串)邊界,如
▲特殊字符6:\B—表示不匹配查找單詞邊界,如
▲特殊字符7:\s—表示匹配查找空字符,等價(jià)于[\n\t\r\v\f](換行符/制表符/回車符/垂直制表符/換頁符/) ▲特殊字符8:\S—表示不匹配查找空字符,等價(jià)于[^\n\t\r\v\f] ▲特殊字符9:\A—表示匹配查找字符串開頭,等價(jià)于 ^ ▲特殊字符10:\Z—表示匹配查找字符串結(jié)尾,等價(jià)于 $ ▲特殊字符11:\x—類似編程中的轉(zhuǎn)義字符,表示匹配查找特殊字符,如
四、正則符號(hào)詳解之?dāng)U展表示法字符—比算法都好用提到正則表達(dá)式的擴(kuò)展表示法時(shí),要給大家強(qiáng)調(diào)一下,擴(kuò)展表示法字符實(shí)用的只有四個(gè),分別是:(?=…)、(?!…)、(?<=…)、(?<!…)。需要說明的是(?:)與擴(kuò)展表示法根本就不是一類,盡管很多書籍將其歸為擴(kuò)展表示法,但實(shí)際上它只是形式相似而已,所以讀者朋友們不必過度在意這個(gè)字符,本文也不做贅述。 在詳細(xì)介紹四種擴(kuò)展表示法之前,我們先要說明一個(gè)概念——斷言,又叫預(yù)查或環(huán)視,先來看術(shù)語解釋: 四種擴(kuò)展表示法 什么意思呢?下面我們來看解釋,比如說你想提取某個(gè)文本中的IP地址,如192.168.***.***,但文本中存在一種情況“56192.168.***.***6564”,雖然這個(gè)字符串中存在192.168.***.***,但顯然它不是有效的IP地址,也就是說我們?cè)诓檎襂P地址 192.168.***.***的時(shí)候,其前后都不能是數(shù)字,那么我們就需要提前查看或者環(huán)視周圍,擴(kuò)展表示法就起到了這樣的作用,如匹配查找office單詞:
關(guān)于具體的編程應(yīng)用案例,感興趣的讀者朋友可以直接用今日頭條app上方的搜索框輸入:“程序員水平進(jìn)階之正則表達(dá)式”,進(jìn)入專欄進(jìn)行查看: 頭條搜索 五、附上兩個(gè)實(shí)用的正則表達(dá)式—夠你寫半天的代碼關(guān)于以下兩種正則表達(dá)式的詳細(xì)解釋可參見文章“程序猿技能進(jìn)階:設(shè)計(jì)一條檢查用戶名是否合法的正則表達(dá)式”與文章“程序猿技能進(jìn)階:一條正則表達(dá)式檢查用戶密碼的合法性”。 ★ 檢查用戶名是否符合要求的正則表達(dá)式:
★ 檢查用戶密碼設(shè)置是否符合要求的正則表達(dá)式:
|
|