資源描述:
《正則表達(dá)式手冊(cè)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、正則表達(dá)式手冊(cè)?正則表達(dá)式就是由普通字符(例如字符?a?到?z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。本文詳細(xì)地列出了能在正則表達(dá)式中使用,以匹配文本的各種字符。當(dāng)你需要解釋一個(gè)現(xiàn)有的正則表達(dá)式時(shí),可以作為一個(gè)快捷的參考。更多詳細(xì)內(nèi)容,請(qǐng)參考:FrancoisLiger,CraigMcQueen,PalWilton[劉樂(lè)亭?譯]C#字符串和正則表達(dá)式參考手冊(cè)?北京:清華大學(xué)出版社2
2、003.2一.??????匹配字符字符類匹配的字符舉?例d從0-9的任一數(shù)字dd匹配72,但不匹配aa或7aD任一非數(shù)字字符DDD匹配abc,但不匹配123w任一單詞字符,包括A-Z,a-z,0-9和下劃線wwww匹配Ab-2,但不匹配∑£$%*或Ab_@W任一非單詞字符W匹配@,但不匹配as任一空白字符,包括制表符,換行符,回車符,換頁(yè)符和垂直制表符匹配在HTML,XML和其他標(biāo)準(zhǔn)定義中的所有傳統(tǒng)空白字符S任一非空白字符空白字符以外的任意字符,如A%&g3;等.任一
3、字符匹配除換行符以外的任意字符除非設(shè)置了MultiLine先項(xiàng)[…]括號(hào)中的任一字符[abc]將匹配一個(gè)單字符,a,b或c.[a-z]將匹配從a?到z的任一字符[^…]不在括號(hào)中的任一字符[^abc]將匹配一個(gè)a、b、c之外的單字符,可以a,b或A、B、C[a-z]將匹配不屬于a-z的任一字符,但可以匹配所有的大寫字母二.??????重復(fù)字符重復(fù)字符含?義舉?例{n}匹配前面的字符n次x{2}匹配xx,但不匹配x或xxx{n,}匹配前面的字符至少n次x{2}匹配2個(gè)或更多的x,如xxx,xxx..{
4、n,m}匹配前面的字符至少n次,至多m次。如果n為0,此參數(shù)為可選參數(shù)x{2,4}匹配xx,xxx,xxxx,但不匹配xxxxx?匹配前面的字符0次或1次,實(shí)質(zhì)上也是可選的x??匹配x或零個(gè)x+匹配前面的字符0次或多次x+?匹配x或xx或大于0的任意多個(gè)x*匹配前面的字符0次或更多次x*?匹配0,1或更多個(gè)x三.??????定位字符定位字符描?述^隨后的模式必須位于字符串的開(kāi)始位置,如果是一個(gè)多行字符串,則必須位于行首。對(duì)于多行文本(包含回車符的一個(gè)字符串)來(lái)說(shuō),需要設(shè)置多行標(biāo)志$前面的模式必須位于
5、字符串的未端,如果是一個(gè)多行字符串,必須位于行尾A前面的模式必須位于字符串的開(kāi)始位置,忽略多行標(biāo)志z前面的模式必須位于字符串的未端,忽略多行標(biāo)志Z前面的模式必須位于字符串的未端,或者位于一個(gè)換行符前b匹配一個(gè)單詞邊界,也就是一個(gè)單詞字符和非單詞字符中間的點(diǎn)。要記住一個(gè)單詞字符是[a-zA-Z0-9]中的一個(gè)字符。位于一個(gè)單詞的詞首B匹配一個(gè)非單詞字符邊界位置,不是一個(gè)單詞的詞首注:定位字符可以應(yīng)用于字符或組合,放在字符串的左端或右端四.??????分組字符分組字符定?義舉?例()此字符可以
6、組合括號(hào)內(nèi)模式所匹配的字符,?它是一個(gè)捕獲組,也就是說(shuō)模式匹配的字符作為最終設(shè)置了ExplicitCapture選項(xiàng)――默認(rèn)狀態(tài)下字符不是匹配的一部分輸入字符串為:ABC1DEF2XY匹配3個(gè)從A到Z的字符和1個(gè)數(shù)字的正則表達(dá)式:([A-Z]{3}d)將產(chǎn)生兩次匹配:Match1=ABC1;Match2=DEF2每次匹配對(duì)應(yīng)一個(gè)組:Match1?的第一個(gè)組=ABC;Match2的第1個(gè)組=DEF有了反向引用,就可以通過(guò)它在正則表達(dá)式中的編號(hào)以及C#和類Group,GroupCollection來(lái)訪
7、問(wèn)組。如果設(shè)置了ExplicitCapture選項(xiàng),就不能使用組所捕獲的內(nèi)容(?:)此字符可以組合括號(hào)內(nèi)模式所匹配的字符,?它是一個(gè)非捕獲組,這意味著模式所的字符將不作為一個(gè)組來(lái)捕獲,但它構(gòu)成了最終匹配結(jié)果的一部分。它基本上與上面的組類型相同,但設(shè)定了選項(xiàng)ExplicitCapture輸入字符串為:1ABBSA?1C匹配一個(gè)數(shù)字或一個(gè)A到Z的字母,接著是任意單詞字符的正則表達(dá)式為:(?:d
8、[A-Z]w)它將產(chǎn)生3次匹配:每1次匹配=1A;每2次匹配=BB;?每3次匹配=SA但是沒(méi)有組被捕獲(?
9、)此選項(xiàng)組合括號(hào)內(nèi)模式所匹配的字符,并用尖括號(hào)中指定?的值為組命名。在正則表達(dá)式中,可以使用名稱進(jìn)行反向引用,而不必使用編號(hào)。即使不設(shè)置ExplicitCapture選項(xiàng),它也是一個(gè)捕獲組。這意味著反向引用可以利用組內(nèi)匹配的字符,或者通過(guò)Group類訪問(wèn)輸入字符串為:CharactersinSienfeldincludedJerrySeinfeld,ElaineBenes,CosnoKramerandGeorgeCostanza能夠匹配它們的姓名,并在一個(gè)