php中正則表達式的特殊字符的含義
在正則表達式的書寫過程中,必然會使用到大量的特殊字符。每一個特殊字符都有不同的含義。為了能夠讓大家有一個大致的了解,泰州網站建設公司宇易網絡對(dui)正則表達式中的(de)特殊字(zi)符進行了一(yi)個歸(gui)納,希望對(dui)大(da)家有(you)用。
字符/
意(yi)(yi)義:對于字(zi)符(fu),通常表示按字(zi)面意(yi)(yi)義,指出接著(zhu)的字(zi)符(fu)為特殊(shu)字(zi)符(fu)。
例如:/b/匹配字(zi)(zi)符(fu)(fu)'b',通(tong)過(guo)在b前面加一(yi)個(ge)反斜杠,也就(jiu)是/b/,則該(gai)字(zi)(zi)符(fu)(fu)變成特殊(shu)(shu)(shu)字(zi)(zi)符(fu)(fu),表示匹配一(yi)個(ge)單詞的(de)分界線。或(huo)者(zhe):對于(yu)幾個(ge)字(zi)(zi)符(fu)(fu),通(tong)常說(shuo)明(ming)是特殊(shu)(shu)(shu)的(de),指出(chu)緊接著(zhu)的(de)字(zi)(zi)符(fu)(fu)不是特殊(shu)(shu)(shu)的(de),而(er)應該(gai)按字(zi)(zi)面解釋。
例如:*是一個特殊字(zi)符(fu)(fu)(fu),匹(pi)(pi)配(pei)(pei)(pei)任意個字(zi)符(fu)(fu)(fu)(包(bao)括0個字(zi)符(fu)(fu)(fu));例如:/a*/意味匹(pi)(pi)配(pei)(pei)(pei)0個或多個a。為了匹(pi)(pi)配(pei)(pei)(pei)字(zi)面上的*,在a前面加一個反斜杠;例如:/a*/匹(pi)(pi)配(pei)(pei)(pei)'a*'。
字符^
意義:表示匹配(pei)的字符必須在最前(qian)邊(bian)。
例(li)如:/^A/不(bu)匹配"an A,"中的(de)'A',但(dan)匹配"An A."中最前面的(de)'A'。
字符$
意義:與^類似(si),匹配最末的字(zi)符。
例如:/t$/不(bu)匹配"eater"中的(de)'t',但匹配"eat"中的(de)'t'。
字符*
意義:匹配(pei)*前(qian)面的(de)字(zi)符0次或n次。
例如:/bo*/匹配(pei)"A ghost booooed"中(zhong)的(de)'boooo'或"A bird warbled"中(zhong)的(de)'b',但不(bu)匹配(pei)"Agoat g
runted"中的任何字符(fu)。
字符+
意義:匹配+號前(qian)面(mian)的字(zi)符1次(ci)(ci)或n次(ci)(ci)。等價于(yu){1,}。
例如(ru):/a+/匹配(pei)"candy"中的'a'和(he)"caaaaaaandy."中的所有'a'。
字符?
意義:匹配(pei)?前面的字符0次或1次。
例如:/e?le?/匹(pi)配"angel"中的'el'和(he)"angle."中的'le'。
字符.
意義:(小(xiao)數(shu)點)匹配除換行符外的所(suo)有(you)單個(ge)的字符。
例如:/.n/匹配(pei)"nay, an apple is on the tree"中(zhong)的'an'和'on',但不匹配(pei)'nay'。
字符(x)
意義:匹(pi)配(pei)'x'并記錄匹(pi)配(pei)的值。
例如:/(foo)/匹配(pei)和(he)記錄"foo bar."中(zhong)的(de)'foo'。匹配(pei)子串能被(bei)結果數(shu)組(zu)中(zhong)的(de)素(su)[1], ...,[n]返
回(hui),或被RegExp對象的屬(shu)性, ...,返(fan)回(hui)。
字符x│y
意義(yi):匹配(pei)'x'或者'y'。
例(li)如:/green│red/匹配(pei)"green apple"中的'green'和"red apple."中的'red'。
字符{ n }
意義:這里的n是(shi)一個(ge)正整數。匹配前面(mian)的n個(ge)字符。
例如:/a{ 2 }/不(bu)匹(pi)配"candy,"中(zhong)的(de)(de)'a',但匹(pi)配"caandy,"中(zhong)的(de)(de)所有(you)'a'和"caaandy."中(zhong)前面(mian)的(de)(de)兩(liang)個'a'。
字符{ n, }
意義:這里的(de)n是一(yi)個正整數(shu)。匹配至(zhi)少n個前面(mian)的(de)字符。
例(li)如(ru):/a{ 2, }不匹配"candy"中的'a',但匹配"caandy"中的所有(you)(you)'a'和(he)"caaaaaaandy."中的所有(you)(you)'a'
字符{ n,m }
意義:這里(li)的(de)n和m都是正整數。匹(pi)配(pei)至(zhi)少(shao)n個最(zui)多m個前面的(de)字符。
例如:/a{ 1,3 }/不匹(pi)(pi)配"cndy"中(zhong)的(de)任(ren)何字符,但匹(pi)(pi)配"candy,"中(zhong)的(de)'a',"caandy,"中(zhong)的(de)前面兩個
'a'和"caaaaaaandy"中前面(mian)的三(san)個'a',注意:即使"caaaaaaandy"中有很多(duo)個'a',但只匹配前面(mian)的三(san)個'a'即"aaa"。
字符[xyz]
意義:一字符列表,匹(pi)配列出中的任一字符。你可以(yi)通過連字符-指出一個(ge)字符范圍。
例如:[abcd]跟(gen)[a-c]一樣。它們(men)匹配"brisket"中(zhong)的'b'和"ache"中(zhong)的'c'。
字符[^xyz]
意(yi)義:一字符(fu)(fu)補集,也就是說,它匹配除了列出(chu)的字符(fu)(fu)外(wai)的所有(you)東西。你可以使用連(lian)字符(fu)(fu)-指出(chu)一字符(fu)(fu)范(fan)圍。
例如:[^abc]和[^a-c]等(deng)價,它們最早匹(pi)配"brisket"中的'r'和"chop."中的'h'。
字符
意義:匹配一個空格(ge)(不要與b混淆)
字符b
意義:匹配一(yi)個(ge)單詞的分界線,比如(ru)一(yi)個(ge)空格(不要與混淆)
例如:/bnw/匹配"noonday"中(zhong)的'no',/wyb/匹配"possibly yesterday."中(zhong)的'ly'。
字符B
意義:匹配一個單詞的非(fei)分界線
例如:/wBn/匹配"noonday"中的(de)'on',/yBw/匹配"possibly yesterday."中的(de)'ye'。
字符cX
意義:這里的X是一個控制字符。匹配一個字符串(chuan)的控制字符。
例(li)如:/cM/匹(pi)配一個(ge)字(zi)符串中的(de)control-M。
字符d
意義:匹配一(yi)個數字,等價于[0-9]。
例如:/d/或/[0-9]/匹(pi)配(pei)"B2 is the suite number."中的'2'。
字符D
意(yi)義:匹(pi)配任何的非數字,等價于[^0-9]。
例(li)如(ru):/D/或(huo)/[^0-9]/匹配"B2 is the suite number."中的'B'。
字符f
意義:匹(pi)配一個表單符
字符n
意義(yi):匹配(pei)一個換行符
字符r
意(yi)義:匹配一個回車(che)符
字符s
意義(yi):匹配一個單(dan)個white空格符,包括空格,tab,form feed,換行符,等價于[ fnrtv]。
例如(ru):/sw*/匹配"foo bar."中的(de)' bar'。
字符S
意義:匹配除white空格符(fu)以外的一個(ge)單個(ge)的字(zi)符(fu),等價于[^ fnrtv]。
例如:/S/w*匹配"foo bar."中(zhong)的(de)'foo'。
字符t
意義(yi):匹配一個(ge)制表符
字符v
意義:匹配(pei)一個頂頭制表(biao)符(fu)
字符w
意(yi)義:匹配所(suo)有的數字和字母以及下劃(hua)線,等價(jia)于[A-Za-z0-9_]。
例如:/w/匹配"apple,"中(zhong)的'a',".28,"中(zhong)的'5'和"3D."中(zhong)的'3'。
字符W
意(yi)義:匹配除數字(zi)、字(zi)母外及下劃線(xian)外的其它字(zi)符,等價于[^A-Za-z0-9_]。
例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的'%'。
字符n
意義:這里的n是一(yi)個正(zheng)整(zheng)數(shu)。匹配一(yi)個正(zheng)則表達式的最后一(yi)個子串的n的值(計數(shu)左圓(yuan)括號)。
例如:/apple(,)sorange1/匹配(pei)"apple, orange, cherry, peach."中的(de)'apple, orange',下面有(you)一(yi)個更加完整的(de)例子(zi)。
注意:如果(guo)左圓括號中的(de)數字比n指定的(de)數字還小(xiao),則n取下一行的(de)八進制(zhi)escape作(zuo)為描述。
字符ooctal和xhex
意義(yi):這(zhe)里的ooctal是一個八進制的escape值,而xhex是一個十六進制的escape值,允許在一個正則表(biao)達式中嵌入ASCII碼(ma)。