這篇文章將為大家詳細講解有關(guān)Perl正則表達式中字符與字符集有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站專注于穆棱網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供穆棱營銷型網(wǎng)站建設(shè),穆棱網(wǎng)站制作、穆棱網(wǎng)頁設(shè)計、穆棱網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造穆棱網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供穆棱網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
⑴元字符
元字符的元(meta)實際上是通配的意思(但與linux的通配符不是一個體系)。在Perl中,反斜杠\就是一個特殊的元字符,要想匹配元字符本身(而不是他在正則表達式里面的含義),可以在相應(yīng)的元字符之前加反斜杠,例如'\.'、'\*'、'\\'就分別匹配文本中的'.'、'*'、'\'。此外元字符^匹配行首,在集合字符[]內(nèi)部表示補集,元字符$則匹配行尾。
⑵模式分組與捕獲
fred+ #可匹配freddddd…(fred)+ #可匹配fredfredfred…
(.)\1 #匹配一個任意字符并重復(fù)一次,也即匹配兩個連續(xù)的相同字符y(….) d\1 #匹配y開頭后面四個任意字符,d開頭也是相同這樣字符的兩個單詞,例如yabba dabbay(.)(.)\2\1 #匹配y開頭后面兩個任意字符,然后接下來是這兩個字符的倒序的單詞,這是匹配類似yabba的這種回文結(jié)構(gòu)y((.)(.)\3\2) d\1 #嵌套結(jié)構(gòu)的反向引用,這里匹配y開頭和d開頭具有四個字符回文結(jié)構(gòu)的單詞組,例如yabba dabba
(.)\g{1}11 #匹配類似于aa11這樣的字符
在這種格式寫法下,還可以使用相對位置進行編號:
(.)(.)\g{-1}11 #匹配類似于xaa11這樣的字符
相對反向引用使用負號來指左邊的捕獲組,-1則為在左邊最靠近引用位置的捕獲組,這種寫法避免了在另外加入括號之后所有編號都必須修改的窘?jīng)r,更有利于程序維護。
y(?:(.)(.)\2\1) d(?:(.)(.)\4\3) #外層括號只起到模式分組作用,可以匹配類似yabba deffe結(jié)構(gòu)的詞組
⑶字符集
字符集(character class)是指一組可能出現(xiàn)的字符,通過寫在方括號[]內(nèi)的表達式進行表示,字符集可以匹配包含在集合內(nèi)的單個字符。例如[abcxyz]可以匹配出現(xiàn)在字符串中的a、b、c、x、y、z中的任一個,相連的字符中間可以使用連字符-表示范圍,例如上式可以寫為[a-cx-z],如果在集合內(nèi)包含連字符本身(而不是表示范圍的含義)則可以使用反斜杠轉(zhuǎn)義。對于ASCII字符可以使用反斜杠加八進制數(shù)字編碼進行表示,例如[\000-\177]會匹配全部127個ASCII字符。在集合中開頭添加脫字符^可以取補集,例如[^0-9]會匹配除數(shù)字以外的字符。對于Unicode字符集,除了可以像\x{2668}通過編碼進行匹配外,還可以通過Unicode屬性,例如很多字符屬于空白符Space、數(shù)字Digit等,那么匹配的表達式則為\p{Space}和\p{Digit}。
字符集的出現(xiàn)是為了簡寫正則表達式,字符集也可以縮寫例如\d可以代表[0-9],\w可以代表[a-zA-Z0-9_]。但在Perl從ASCII時代邁向Unicode時代之后,字符集的縮寫更加寬泛,\d除了可以匹配普通數(shù)字,還可以匹配其他語言里的各種數(shù)字寫法。從Perl 5.14開始,可以在正則表達式界定符后面添加修飾符a(關(guān)于界定符和修飾符詳見下一小節(jié)),則正則表達式嚴格按照ASCII編碼進行匹配,例如/\d/a則等同于/[0-9]/。字符集縮寫將小寫字母改為大寫字母即變?yōu)檠a集,例如ASCII編碼下\D可以代表[^0-9],此外很有意思的是[\d\D]將會匹配任何字符且包括換行符,這比'.'所包含的范圍更廣。
⑷元字符優(yōu)先級
和操作符或者函數(shù)一樣,正則表達式的元字符也存在優(yōu)先級問題。元字符優(yōu)先級規(guī)則如下所示:
①在此優(yōu)先級表的最頂端是括號(),在模式分組和反向引用的時候使用,括號內(nèi)部的任何部分比括號外的部分結(jié)合更緊密;
②第二級是數(shù)量詞即星號(*), 加號(+),問號(?)以及由花括號表示的數(shù)量詞,如{5,15}、{3, }、{5}等,它們通常和前一項元素緊密結(jié)合;
③第三級的是錨定和序列(sequence),錨定包括開頭^、結(jié)尾$、詞界符\b、非詞界符\B,序列(一個元素緊接著一個元素)實際上是一種操作,雖然它沒有使用元字符;
關(guān)于“Perl正則表達式中字符與字符集有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。