PHP程序設計基礎(微課版)(第2版)課件 1.PHP正則表達式簡介及語法_第1頁
PHP程序設計基礎(微課版)(第2版)課件 1.PHP正則表達式簡介及語法_第2頁
PHP程序設計基礎(微課版)(第2版)課件 1.PHP正則表達式簡介及語法_第3頁
PHP程序設計基礎(微課版)(第2版)課件 1.PHP正則表達式簡介及語法_第4頁
PHP程序設計基礎(微課版)(第2版)課件 1.PHP正則表達式簡介及語法_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

8.1正則表達式簡介、語法演講人1正則表達式簡介012PHP正則表達式語法02目錄011正則表達式簡介1正則表達式簡介在某些應用中,有時候需要根據(jù)一定的規(guī)則來匹配(查找)確認一些字符串,如要求用戶輸入的QQ號碼為數(shù)字且至少5位。用于描述這些規(guī)則的工具就是正則表達式。1.1最簡單的匹配最簡單的匹配就是直接給定字符匹配。如用字符a去匹配aabab,則會匹配出3個結果,分別是字符串中的第1,2和第4個字符。這種匹配是最簡單的情況,但往往實際處理中會復雜得多,如下面的“QQ號碼為數(shù)字且至少5位”,其對應的正則表達式為:^\d{5,}$該正則表達式就描述需要確定的內容為至少5位以上的數(shù)字。該表達式是怎么描述這一規(guī)則的:^:表示匹配字符串的開始,也即該字符串是獨立的開始而不是包含在某個字符串之內\d:表示匹配數(shù)字{5,}:表示至少匹配5位及以上1.1最簡單的匹配$:表示匹配字符串的結束,也即該字符串是獨立的結束現(xiàn)在就很清楚了,該正則表達式綜合起來就是匹配5位以上的連續(xù)數(shù)字,且有獨立的開始和結束,對于少于5位的數(shù)字,或者不是以數(shù)字開始和結尾的如a123456b這樣都是無效的。從該實例可以看出,正則表達式是從左至右描述的。同樣,如果要匹配移動號碼的正則表達式為:^1\d{10}$提示由于對正則表達式的匹配結果,在很多情況下都不是那么確定,所以最好下載一些輔助工具用于測試正則表達式的匹配結果。這類工具如MatchTracer、RegExBuilder等,以及其他類似的工具也可。1.2元字符在上面的實例中,^、\d及$等這些符號,代表了特定的匹配意義,稱之為元字符,常用的元字符如下:提示當要匹配這些元字符的時候,需要用到字符轉義功能,同樣正則表達式里面用\來表示轉義,如要匹配.符號,則需要用\.,否則.會被解釋成“除換行符外的任意字符”。當然,要匹配\,則需要寫成\\連續(xù)的數(shù)字或字母可以用–符號連接起來,如匹配所有的小寫字母,[1-5]匹配1至5這5個數(shù)字022PHP正則表達式語法2.1重復規(guī)則正則表達式的威力在于其能夠在模式中包含選擇和循環(huán),正則表達式用一些重復規(guī)則來表達循環(huán)匹配。常用的重復如下:2.2分枝分枝是指制定幾個規(guī)則,如果滿足任意一種規(guī)則,則都當作匹配成功。具體來說就是用|符號把各種規(guī)則分開,且條件從左至右匹配。提示由于分枝規(guī)定,只要匹配成功,就不再對后面的條件加以匹配,所以如果想匹配有包含關系的內容,請注意規(guī)則的順序。下面是一個使用分枝的實例。美國的郵政編碼的規(guī)則是5個數(shù)字或者5個數(shù)字連上4個數(shù)字,如12345或者54321-1234,如果要匹配所有的郵編,則正確的正則表達式為:\d{5}-\d{4}|\d{5}//錯誤寫法2.2分枝\d{5}|\d{5}-\d{4}下面的錯誤寫法,只能匹配到5位數(shù)字及9位數(shù)字的前5位數(shù)字的情況,而不能匹配9位數(shù)字的郵編。2.3分組在正則表達式中,可以用小括號將一些規(guī)則括起來當作分組,分組可以作為一個元字符來看待。分組的實例,驗證IP地址:(\d{1,3}\.){3}\d{1,3}這是一個簡單的且不完善的匹配IP地址的正則表達式,因為它除了能匹配正確的IP地址外,還能匹配如322.197.578.888這種不存在的IP地址。當然,用這個表達式簡單匹配成功后可以在利用PHP的算術比較再加以判斷IP地址是否正確。而正則表達式中沒有提供算術比較功能,如果要完全匹配正確的IP地址,則需要改進如下:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)2.3分組規(guī)則說明該規(guī)則關鍵之處在于確定IP地址每一段范圍為0-255,然后再重復4次即可。在:25[0-5]|2[0-4]\d|[01]?\d\d?中,用分枝首先確定了250-255和200-249。[01]?\d\d?則確定了0-199的范圍,綜合起來就是0-255。2.4貪婪與懶惰正則表達式默認的情況下,會在滿足匹配條件下盡可能的匹配更多內容。如a.*b,用他來匹配aabab,它會匹配整個aabab,而不會只匹配到aab為止,這就是貪婪匹配。與貪婪匹配對應的是,在滿足匹配條件的情況下盡可能的匹配更少的內容,這就是懶惰匹配。上述實例對應的懶惰匹配規(guī)則為:a.*?b如果用該表達式去匹配aabab

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論