一雇盖、行定位符(^和$)
行定位符就是用來(lái)描述字串的邊界忿等。“^”表示行的開(kāi)始崔挖;“$”表示行的結(jié)尾贸街。如:
^tm : 該表達(dá)式表示要匹配字串tm的開(kāi)始位置是行頭,如tm equal Tomorrow Moon就可以匹配
tm$ : 該表達(dá)式表示要匹配字串tm的位置是行尾狸相,Tomorrow Moon equal tm匹配薛匪。
如果要匹配的字串可以出現(xiàn)在字符串的任意部分,那么可以直接 寫(xiě)成 :tm
二脓鹃、單詞定界符(\b逸尖、\B)
單詞分界符\b,表示要查找的字串為一個(gè)完整的單詞瘸右。如:\btm\b
還有一個(gè)大寫(xiě)的\B娇跟,意思和\b相反。它匹配的字串不能是一個(gè)完整的單詞尊浓,而是其他單詞或字串的一部分逞频。如:\Btm\B
三、字符類([ ])
正則表達(dá)式是區(qū)分大小寫(xiě)的栋齿,如果要忽略大小寫(xiě)可使用方括號(hào)表達(dá)式“[]”苗胀。只要匹配的字符出現(xiàn)在方括號(hào)內(nèi),即可表示匹配成功瓦堵。但要注意:一個(gè)方括號(hào)只能匹配一個(gè)字符基协。例如,要匹配的字串tm不區(qū)分大小寫(xiě)菇用,那么該表達(dá)式應(yīng)該寫(xiě)作如下格式:[Tt][Mm]
POSIX風(fēng)格的預(yù)定義字符類如表所示:
四澜驮、選擇字符(|)
還有一種方法可以實(shí)現(xiàn)上面的匹配模式,就是使用選擇字符(|)惋鸥。該字符可以理解為“或”杂穷,如上例也可以寫(xiě)成 (T|t)(M|m)悍缠,該表達(dá)式的意思是以字母T或t開(kāi)頭,后面接一個(gè)字母M或m耐量。
使用“[]”和使用“|”的區(qū)別在于“[]”只能匹配單個(gè)字符飞蚓,而“|”可以匹配任意長(zhǎng)度的字串。如果不怕麻煩廊蜒,上例還可以寫(xiě)為 :TM|tm|Tm|tM
五趴拧、連字符(-)
變量的命名規(guī)則是只能以字母和下劃線開(kāi)頭。但這樣一來(lái)山叮,如果要使用正則表達(dá)式來(lái)匹配變量名的第一個(gè)字母著榴,要寫(xiě)為 :[a,b,c,d…A,B,C,D…]
這無(wú)疑是非常麻煩的,正則表達(dá)式提供了連字符“-”來(lái)解決這個(gè)問(wèn)題屁倔。連字符可以表示字符的范圍脑又。如上例可以寫(xiě)成 :[a-zA-Z]
六、排除字符([^])
上面的例子是匹配符合命名規(guī)則的變量∪窠瑁現(xiàn)在反過(guò)來(lái)挂谍,匹配不符合命名規(guī)則的變量,正則表達(dá)式提供了“^”字符瞎饲。這個(gè)元字符在前面出現(xiàn)過(guò)口叙,表示行的開(kāi)始。而這里將會(huì)放到方括號(hào)中嗅战,表示排除的意思妄田。
例如:[^a-zA-Z],該表達(dá)式匹配的就是不以字母和下劃線開(kāi)頭的變量名驮捍。
七疟呐、限定符(? * + {n,m})
對(duì)于重復(fù)出現(xiàn)字母或字串,可以使用限定符來(lái)實(shí)現(xiàn)匹配东且。限定符主要有6種启具,如表所示:
八、點(diǎn)號(hào)字符(.)
點(diǎn)字符(.)可以匹配出換行符外的任意一個(gè)字符珊泳。
注意:是除了換行符外的鲁冯、任意的一個(gè)字符。如匹配以s開(kāi)頭色查、t結(jié)尾薯演、中間包含一個(gè)字母的單詞。
格式如下: ^s.t$秧了,匹配的單詞包括:sat跨扮、set、sit等。
再舉一個(gè)實(shí)例衡创,匹配一個(gè)單詞帝嗡,它的第一個(gè)字母為r,第3個(gè)字母為s璃氢,最后一個(gè)字母為t丈探。能匹配該單詞的正則表達(dá)式為:^r.s.t$
九、轉(zhuǎn)義字符(\)
正則表達(dá)式中的轉(zhuǎn)移字符(\)和PHP中的大同小異拔莱,都是將特殊字符(如“.”、“?”隘竭、“\”等)變?yōu)槠胀ǖ淖址燎亍Ee一個(gè)IP地址的實(shí)例,用正則表達(dá)式匹配諸如127.0.0.1這樣格式的IP地址动看。如果直接使用點(diǎn)字符尊剔,格式為:[0-9]{1,3}(.[0-9]{1,3}){3}
這顯然不對(duì),因?yàn)椤?”可以匹配一個(gè)任意字符菱皆。這時(shí)须误,不僅是127.0.0.1這樣的IP,連127101011這樣的字串也會(huì)被匹配出來(lái)仇轻。所以在使用“.”時(shí)京痢,需要使用轉(zhuǎn)義字符(\)。修改后上面的正則表達(dá)式格式為: [0-9]{1,3}(.[0-9]{1,3}){3}
十篷店、反斜線(\)
除了可以做轉(zhuǎn)義字符外祭椰,反斜線還有其他一些功能。反斜線可以將一些不可打印的字符顯示出來(lái)疲陕,如表所示:
還可以指定預(yù)定義字符集方淤,如表所示:
反斜線還有一種功能,就是定義斷言蹄殃,其中已經(jīng)了解過(guò)了\b携茂、\B,其他如表所示:
十一诅岩、括號(hào)字符(())
小括號(hào)字符的第一個(gè)作用就是可以改變限定符的作用范圍讳苦,如“|”、“”吩谦、“^”等医吊。來(lái)看下面的一個(gè)表達(dá)式。
(thir|four)th逮京,這個(gè)表達(dá)式的意思是匹配單詞thirth或fourth卿堂,如果不使用小括號(hào),那么就變成了匹配單詞thir和fourth了。
小括號(hào)的第二個(gè)作用是分組草描,也就是子表達(dá)式览绿。如(.[0-9]{1,3}){3},就是對(duì)分組(.[0-9]{1,3})進(jìn)行重復(fù)操作穗慕。后面要學(xué)到的反向引用和分組有著直接的關(guān)系饿敲。
十二、反向引用
十三逛绵、模式修飾符
模式修飾符的作用是設(shè)定模式怀各。也就是規(guī)定正則表達(dá)式應(yīng)該如何解釋和應(yīng)用。
不同的語(yǔ)言都有自己的模式設(shè)置术浪,PHP中的主要模式如表所示: