




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、正則表達式手冊 正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。本文詳細地列出了能在正則表達式中使用,以匹配文本的各種字符。當你需要解釋一個現有的正則表達式時,可以作為一個快捷的參考。更多詳細內容,請參考:Francois Liger,Craig McQueen,Pal Wilton劉樂亭 譯 C#字符串和正則表達式參考手冊 北京:清華大學出版社2003.2一.
2、60; 匹配字符字符類匹配的字符舉 例d從-的任一數字dd匹配72,但不匹配aa或7aD任一非數字字符DDD匹配abc,但不匹配123w任一單詞字符,包括A-Z,a-z,0-9和下劃線wwww匹配Ab-2,但不匹配£$%*或Ab_W任一非單詞字符W匹配,但不匹配as任一空白字符,包括制表符,換行符,回車符,換頁符和垂直制表符匹配在HTML,XML和其他標準定義中的所有傳統空白字符S任一非空白字符空白字符以外的任意字符,如A%&g3;等.任一字符匹配除換行符以外的任意字符除非設置了MultiLine先項括號中的任一字符ab
3、c將匹配一個單字符,a,b或c.a-z將匹配從a 到z的任一字符不在括號中的任一字符abc將匹配一個a、b、c之外的單字符,可以a,b或A、B、Ca-z將匹配不屬于a-z的任一字符,但可以匹配所有的大寫字母二. 重復字符重復字符含 義舉 例n匹配前面的字符n次x2匹配xx,但不匹配x或xxxn,匹配前面的字符至少n次x2匹配2個或更多的x,如xxx,xxx.n,m匹配前面的字符至少n次,至多m次。如果n為0,此參數為可選參數x2,4匹配xx,xxx,xxxx,但不匹配xxxxx?匹配前面的字符0
4、次或1次,實質上也是可選的x? 匹配x或零個x+匹配前面的字符1次或多次x+ 匹配一次或大于0的任意多個x*匹配前面的字符0次或更多次x* 匹配0,1或更多個x三. 定位字符定位字符描 述隨后的模式必須位于字符串的開始位置,如果是一個多行字符串,則必須位于行首。對于多行文本(包含回車符的一個字符串)來說,需要設置多行標志$前面的模式必須位于字符串的未端,如果是一個多行字符串,必須位于行尾A前面的模式必須位于字符串的開始位置,忽略多行標志z前面的模式必須位于字符串的未端,忽略多行標志Z前
5、面的模式必須位于字符串的未端,或者位于一個換行符前b匹配一個單詞邊界,也就是一個單詞字符和非單詞字符中間的點。要記住一個單詞字符是a-zA-Z0-9中的一個字符。位于一個單詞的詞首B匹配一個非單詞字符邊界位置,不是一個單詞的詞首注:定位字符可以應用于字符或組合,放在字符串的左端或右端四. 分組字符分組字符定 義舉 例()此字符可以組合括號內模式所匹配的字符, 它是一個捕獲組,也就是說模式匹配的字符作為最終設置了ExplicitCapture選項默認狀態下字符不是匹配的一部分輸入字符串為:ABC1
6、DEF2XY匹配3個從A到Z的字符和1個數字的正則表達式:(A-Z3d)將產生兩次匹配:Match 1=ABC1;Match 2=DEF2每次匹配對應一個組:Match1 的第一個組ABC;Match2的第1個組DEF有了反向引用,就可以通過它在正則表達式中的編號以及C#和類Group,GroupCollection來訪問組。如果設置了ExplicitCapture選項,就不能使用組所捕獲的內容(?:)此字符可以組合括號內模式所匹配的字符, 它是一個非捕獲組,這意味著模式所的字符將不作為一個組來捕獲,但它構成了最終匹配結果的一部分。它基本上與上面的組類型相同,但設定了選項E
7、xplicitCapture輸入字符串為:1A BB SA 1 C匹配一個數字或一個A到Z的字母,接著是任意單詞字符的正則表達式為:(?:d|A-Zw)它將產生3次匹配:每1次匹配1A;每2次匹配BB; 每3次匹配SA但是沒有組被捕獲(?<name>)此選項組合括號內模式所匹配的字符,并用尖括號中指定 的值為組命名。在正則表達式中,可以使用名稱進行反向引用,而不必使用編號。即使不設置ExplicitCapture選項,它也是一個捕獲組。這意味著反向引用可以利用組內匹配的字符,或者通過Group類訪問輸入字符串為:Characters in Sienfe
8、ld included Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能夠匹配它們的姓名,并在一個組llastName中捕獲姓的正則表達式為:bA-Za-z+(?<lastName>A-Za-z+)b它產生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza每一次匹配都對應了一個lastName組:第1次匹配:lastName gro
9、up=Seinfeld第2次匹配:lastName group=Benes第3次匹配:lastName group=Kramer第4次匹配:lastName group=Costanza不管是否設置了選項ExplictCapture,組都將被捕獲(?=)正聲明。聲明的右側必須是括號中指定的模式。此模式不構成最終匹配的一部分正則表達式S+(?=.NET)要匹配的輸入字符串為:The languages were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal將產生如下匹配:C#VBJScript(?!)負聲明。它規定模式不能緊臨著聲明的右側。此模式不構成最終匹配的
10、一部分d3(?!A-Z)要匹配的輸入字符串為:123A 456 789 111C將產生如下匹配:456789(?<=)反向正聲明。聲明的左側必須為括號內的指定模式。此模式不構成最終匹配的一部分正則表達式(?<=New)(A-Za-z+)要匹配的輸入字符串為:The following states,New Mexico,West Virginia,Washington, New England它將產生如下匹配:MexicoEngland(?<!)反向正聲明。聲明的左側必須不能是括號內的指定模式。此模式不構成最終匹配的一部分正則表達式(?<!1)d2(
11、A-Z)要匹配的輸入字符串如下:123A 456F 789C 111A它將實現如下匹配:56F89C(?>)非回溯組。防止Regex引擎回溯并且防止實現一次匹配假設要匹配所有以“ing”結尾的單詞。輸入字符串如下:He was very trusing正則表達式為:.*ing它將實現一次匹配單詞trusting。“.” 匹配任意字符,當然也匹配“ing”。所以,Regex引擎回溯一位并在第2個“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing它將實現0次匹配。“.”能匹配所有的字符,包括“ing”不能匹配,從
12、而匹配失敗 五. 決策字符字 符 描 述舉 例(?(regex)yes_regex|no_regex)如果表達式regex匹配,那么將試圖匹配表達式yes。否則匹配表達式no。正則表達式no是可先參數。注意,作出決策的模式寬度為0.這意味著表達式yes或no 將從與regex表達式相同的位置開始匹配正則表達式(?(d)dA|A-Z)B)要匹配的輸入字符串為:1A CB 3A 5C 3B它實現的匹配是:1ACB3A(?(group name or
13、number)yes_regex|no_regex)如果組中的正則表達式實現了匹配,那么試圖匹配yes正則表達式。否則,試圖匹配正則表達式no。no是可先的參數正則表達式 (d7)?-(?(1)ddA-Z|A-ZA-Z要匹配的輸入字符串為:77-77A 69-AA 57-B它實現的匹配為:77-77AAA注:上面表中列出的字符強迫處理器執行一次if-else決策 六. 替換字符字 符描 述$group用group指定的組號替換$name替換被一個(?<name>)組匹配的最
14、后子串$替換一個字符$&替換整個的匹配$替換輸入字符串匹配之前的所有文本$替換輸入字符串匹配之后的所有文本$+替換最后捕獲的組$_替換整個的輸入字符串注:以上為常用替換字符,不全 七. 轉義序列字 符描 述匹配字符“”.匹配字符“.”*匹配字符“*”+匹配字符“+”?匹配字符“?”|匹配字符“|”(匹配字符“(”)匹配字符“)”匹配字符“”匹配字符“”匹配字符“”$匹配字符“$”n匹配換行符r匹配回車符t匹配制表符v匹配垂直制表符f匹配換面符nnn匹配一個8進數字,nnn指定的ASCII
15、字符。如103匹配大寫的Cxnn匹配一個16進數字,nn指定的ASCII字符。如x43匹配大寫的Cunnnn匹配由4位16進數字(由nnnn表示)指定的Unicode字符cV匹配一個控制字符,如cV匹配Ctrl-V 八. 選項標志選項標志名 稱IIgnoreCaseMMultilineNExplicitCaptureSSingleLineXIgnorePatternWhitespace注:選項本身的信作含義如下表所示:標 志名 稱IgnoreCase使模式匹配不區分大小寫。默認的選項是
16、匹配區分大小寫RightToLeft從右到左搜索輸入字符串。默認是從左到右以符合英語等的閱讀習慣,但不符合阿拉伯語或希伯來語的閱讀習慣None不設置標志。這是默認選項Multiline指定和$可以匹配行首和行尾,以及字符串的開始和結尾。這意味著可以匹配每個用換行符分隔的行。但是,字符“.”仍然不匹配換行符SingleLine規定特殊字符“.” 匹配任意的字符,包括換行符。默認情況下,特殊字符“.”不匹配換行符。通常與MultiLine選項一起使用ECMAScriptECMA(European Coputer Manufacturers Association,歐洲計算機生產商協會)已
17、經定義了正則表達式應該如何實現,而且已經在ECMAScript規范中實現,這是一個基于標準的JavaScript。這個選項只能與IgnoreCase和MultiLine標志一起使用。與其它任何標志一起使用,ECMAScript都將產生異常IgnorePatternWhitespace此選項從使用的正則表達式模式中刪除所有非轉義空白字符。它使表達式能跨越多行文本,但必須確保對模式中所有的空白進行轉義。如果設置了此選項,還可以使用“#”字符來注釋下則表達式Complied它把正則表達式編譯為更接近機器代碼的代碼。這樣速度快,但不允許對它進行任何修改<?php$string = "s
18、tartDate = 1999-5-27"$pattern = array("/(19|20)(d2)-(d1,2)-(d1,2)/","/s*(w+)s*=/");$replacement = array("3/4/12","$1=");echo preg_replace($pattern, $replacement, $string); /$startDate=5/27/1999?>如果你僅僅想要檢查一個字符串是否包含另外一個字符串, 不要使用preg_match(). 使用strpos()或strstr()替代完成工作會更快.preg_match()返回pattern的匹配次數. 它的值將是0次(不匹配)或1次, 因為preg_match()在第一次匹配后 將會停止搜索.preg_match_all()不同于此, 它會一直搜索subject 直到到達結尾. 如果發生錯誤preg_match()返回FALSE.<?php$str = <<<FOOa: 1b:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國百貨行業發展研究與產業戰略規劃分析評估報告
- 2025至2030中國生物貂行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國玉米淀粉行業發展研究與產業戰略規劃分析評估報告
- 影樓團隊培訓課件
- 技術賦能教育實現個性化教學的突破
- 財務報銷流程培訓
- 教育數據挖掘的潛力學生在多元評價體系中的應用
- 年度培訓計劃編寫課件
- 技術創新助力教育混和教學模式新發展
- 智慧城市服務中智能公共服務設施的可持續發展融資策略
- 2025至2030全球及中國企業文件共享和同步(EFSS)行業產業運行態勢及投資規劃深度研究報告
- 上海金山區屬國有企業招聘筆試真題2024
- 2025至2030中國碳化硅陶瓷膜行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國生石灰行業市場深度調研及發展趨勢與投資方向報告
- 一通三防管理課件
- 2025秋二年級上冊語文上課課件 2 我是什么
- 胖東來總值班管理制度
- 口腔診室終末消毒流程
- 2024年廣州市荔灣區社區專職招聘考試真題
- 切口感染案例分析
- 2025-2030年中國管道運輸行業市場深度分析及發展前景與投資研究報告
評論
0/150
提交評論