付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
正則表達式基本說來,正則表達式是一種用來描述一定數(shù)量文本的模式文字符號最基本的正則表達式由單個文字符號組成。如<<a>>,它將匹配字符串中第一次出現(xiàn)的字符“a”。如對字符串“Jackisaboy”?!癑”后的“a”將被匹配。而第二個“a”將不會被匹配。正則表達式也可以匹配第二個“a”,這必須是你告訴正則表達式引擎從第一次匹配的地方開始搜索。在文本編輯器中,你可以使用“查找下一個”。在編程語言中,會有一個函數(shù)可以使你從前一次匹配的位置開始繼續(xù)向后搜索。類似的,<<cat>>會匹配“Aboutcatsanddogs”中的“cat”。這等于是告訴正則表達式引擎,找到一個<<c>>,緊跟一個<<a>>,再跟一個<<t>>。要注意,正則表達式引擎缺省是大小寫敏感的。除非你告訴引擎忽略大小寫,否則<<cat>>不會匹配“Cat”。特殊字符對于文字字符,有11個字符被保留作特殊用途。他們是:[]\^$.|?*+()這些特殊字符也被稱作元字符。如果你想在正則表達式中將這些字符用作文本字符,你需要用反斜杠“\”對其進行換碼(escape)。例如你想匹配“1+1=2”,正確的表達式為<<1\+1=2>>.需要注意的是,<<1+1=2>>也是有效的正則表達式。但它不會匹配“1+1=2”,而會匹配“123+111=234”中的“111=2”。因為“+”在這里表示特殊含義(重復(fù)1次到多次)。在編程語言中,要注意,一些特殊的字符會先被編譯器處理,然后再傳遞給正則引擎。因此正則表達式<<1\+2=2>>在C++中要寫成“1\\+1=2”。為了匹配“C:\temp”,你要用正則表達式<<C:\\temp>>。而在C++中,正則表達式則變成了“C:\\\\temp”。不可顯示字符可以使用特殊字符序列來代表某些不可顯示字符:<<\t>>代表Tab(0x09)<<\r>>代表回車符(0x0D)<<\n>>代表換行符(0x0A)要注意的是Windows中文本文件使用“\r\n”來結(jié)束一行而Unix使用“\n”。正則表達式引擎的內(nèi)部工作機制知道正則表達式引擎是如何工作的有助于你很快理解為何某個正則表達式不像你期望的那樣工作。有兩種類型的引擎:文本導(dǎo)向(text-directed)的引擎和正則導(dǎo)向(regex-directed)的引擎。JeffreyFriedl把他們稱作DFA和NFA引擎。本文談到的是正則導(dǎo)向的引擎。這是因為一些非常有用的特性,如“惰性”量詞(lazyquantifiers)和反向引用(backreferences),只能在正則導(dǎo)向的引擎中實現(xiàn)。所以毫不意外這種引擎是目前最流行的引擎。你可以輕易分辨出所使用的引擎是文本導(dǎo)向還是正則導(dǎo)向。如果反向引用或“惰性”量詞被實現(xiàn),則可以肯定你使用的引擎是正則導(dǎo)向的。你可以作如下測試:將正則表達式<<regex|regexnot>>應(yīng)用到字符串“regexnot”。如果匹配的結(jié)果是regex,則引擎是正則導(dǎo)向的。如果結(jié)果是regexnot,則是文本導(dǎo)向的。因為正則導(dǎo)向的引擎是“猴急”的,它會很急切的進行表功,報告它找到的第一個匹配。
正則導(dǎo)向的引擎總是返回最左邊的匹配這是需要你理解的很重要的一點:即使以后有可能發(fā)現(xiàn)一個“更好”的匹配,正則導(dǎo)向的引擎也總是返回最左邊的匹配。當(dāng)把<<cat>>應(yīng)用到“Hecapturedacatfishforhiscat”,引擎先比較<<c>>和“H”,結(jié)果失敗了。于是引擎再比較<<c>>和“e”,也失敗了。直到第四個字符,<<c>>匹配了“c”。<<a>>匹配了第五個字符。到第六個字符<<t>>沒能匹配“p”,也失敗了。引擎再繼續(xù)從第五個字符重新檢查匹配性。直到第十五個字符開始,<<cat>>匹配上了“catfish”中的“cat”,正則表達式引擎急切的返回第一個匹配的結(jié)果,而不會再繼續(xù)查找是否有其他更好的匹配。字符集字符集的一些應(yīng)用查找一個可能有拼寫錯誤的單詞,比如<<sep[ae]r[ae]te>>或<<li[cs]en[cs]e>>。查找程序語言的標(biāo)識符,<<A-Za-z_][A-Za-z_0-9]*>>。(*表示重復(fù)0或多次)查找C風(fēng)格的十六進制數(shù)<<0[xX][A-Fa-f0-9]+>>。(+表示重復(fù)一次或多次)取反字符集在左方括號“[”后面緊跟一個尖括號“^”,將會對字符集取反。結(jié)果是字符集將匹配任何不在方括號中的字符。不像“.”,取反字符集是可以匹配回車換行符的。需要記住的很重要的一點是,取反字符集必須要匹配一個字符。<<q[^u]>>并不意味著:匹配一個q,后面沒有u跟著。它意味著:匹配一個q,后面跟著一個不是u的字符。所以它不會匹配“Iraq”中的q,而會匹配“Iraqisacountry”中的q和一個空格符。事實上,空格符是匹配中的一部分,因為它是一個“不是u的字符”。如果你只想匹配一個q,條件是q后面有一個不是u的字符,我們可以用后面將講到的向前查看來解決。常用正則表達式匹配中文字符的正則表達式:[\u4e00-\u9fa5]評注:匹配中文還真是個頭疼的事,有了這個表達式就好辦了匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]評注:可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)匹配空白行的正則表達式:\n\s*\r評注:可以用來刪除空白行匹配HTML標(biāo)記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*?/>評注:網(wǎng)上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力
匹配首尾空白字符的正則表達式:^\s*|\s*$評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*評注:表單驗證時很實用
匹配網(wǎng)址URL的正則表達式:[a-zA-z]+://[^\s]*評注:網(wǎng)上流傳的版本功能很有限,上面這個基本可以滿足需求匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$評注:表單驗證時很實用匹配國內(nèi)電話號碼:\d{3}-\d{8}|\d{4}-\d{7}評注:匹配形式如或匹配騰訊QQ號:[1-9][0-9]{4,}評注:騰訊開始匹配中國郵政編碼:[1-9]\d{5}(?!\d)評注:中國郵政編碼為6位數(shù)字匹配身份證:\d{15}|\d{18}評注:中國的身份證為15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+評注:提取ip地址時有用匹配特定數(shù)字:^[1-9]\d*$
//匹配正整數(shù)^-[1-9]\d*$
//匹配負(fù)整數(shù)^-?[1-9]\d*$
//匹配整數(shù)^[1-9]\d*|0$
//匹配非負(fù)整數(shù)(正整數(shù)+0)^-[1-9]\d*|0$
//匹配非正整數(shù)(負(fù)整數(shù)+0)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
//匹配正浮點數(shù)
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
//匹配負(fù)浮點數(shù)^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
//匹配浮點數(shù)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
//匹配非負(fù)浮點數(shù)(正浮點數(shù)+0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
//匹配非正浮點數(shù)(負(fù)浮點數(shù)+0)評注:處理大量數(shù)據(jù)時有用,具體應(yīng)用時注意修正匹配特定字符串:^[A-Za-z]+$
//匹配由
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 狂飆人物介紹
- 2026年設(shè)備安全漏洞主動修復(fù)機制項目評估報告
- 2026年無人機配送系統(tǒng)項目可行性研究報告
- 2025年江蘇省鎮(zhèn)江市中考化學(xué)真題卷含答案解析
- 2025年四川省資陽市中考地理真題卷含答案解析
- 2025年全國物業(yè)管理師考試真題及答案
- 2025年公共營養(yǎng)師三級資格證考試題(附答案)
- 2025年地質(zhì)災(zāi)害隱患點巡排查年度工作總結(jié)
- 腳手架工程量計算詳解
- 2025年數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)綜合能力考試試卷及答案
- 口腔修復(fù)學(xué):全口義齒課件
- 膜式壁制造及檢驗工藝演示文稿
- 紅壤區(qū)貧瘠農(nóng)田土壤快速培肥技術(shù)規(guī)程
- 證券市場基礎(chǔ)知識講義全
- 宣城硅鑫新材料有限公司年產(chǎn)1.17萬噸特種硅油系列產(chǎn)品項目環(huán)境影響報告書
- 心肺復(fù)蘇操作考核評分表 (詳)
- 公園建設(shè)項目環(huán)境影響報告書
- 員工就業(yè)規(guī)則
- SS3和SS4簡明電路圖教案
- 路面施工風(fēng)險告知書
- 新生兒常用藥物外滲后的處理課件
評論
0/150
提交評論