今天剛好要用到正則表達式掰担,然而太久沒用,相關(guān)知識點有點模糊了谒出,重新簡單地復習一下,并分享一下。
首先:什么是正則表達式笤喳?
教程上是這樣說的:
正則表達式(Regular Expression)是一種文本模式为居,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符")杀狡。它使用單個字符串來描述蒙畴、匹配一系列匹配某個句法規(guī)則的字符串。
概念上對正則表達式的描述:
- 它的組成是由普通字符(例如呜象,a 到 z 之間的字母)和特殊字符(稱為"元字符")膳凝;
- 它是一種文本模式;
- 它使用單個字符串來描述恭陡、匹配一系列匹配某個句法規(guī)則的字符串蹬音。
為什么使用正則表達式?
典型的搜索和替換操作要求您提供與預期的搜索結(jié)果匹配的確切文本子姜。雖然這種技術(shù)對于對靜態(tài)文本執(zhí)行簡單搜索和替換任務可能已經(jīng)足夠了祟绊,但它缺乏靈活性,若采用這種方法搜索動態(tài)文本哥捕,即使不是不可能牧抽,至少也會變得很困難。
通過使用正則表達式遥赚,可以:
- 測試字符串內(nèi)的模式扬舒。
例如,可以測試輸入字符串凫佛,以查看字符串內(nèi)是否出現(xiàn)電話號碼模式或信用卡號碼模式讲坎。這稱為數(shù)據(jù)驗證。 - 替換文本愧薛。
可以使用正則表達式來識別文檔中的特定文本晨炕,完全刪除該文本或者用其他文本替換它。 - 基于模式匹配從字符串中提取子字符串毫炉。
可以查找文檔內(nèi)或輸入域內(nèi)特定的文本瓮栗。
例如,您可能需要搜索整個網(wǎng)站瞄勾,刪除過時的材料费奸,以及替換某些 HTML 格式標記。在這種情況下进陡,可以使用正則表達式來確定在每個文件中是否出現(xiàn)該材料或該 HTML 格式標記愿阐。此過程將受影響的文件列表縮小到包含需要刪除或更改的材料的那些文件。然后可以使用正則表達式來刪除過時的材料趾疚。最后缨历,可以使用正則表達式來搜索和替換標記以蕴。
以上列表中的三點,告訴了我們正則表達式可以干什么辛孵,那接下來就是它的語法了舒裤,然后是怎么用。
正則表達式的語法
理解分點匯總:
- 構(gòu)造正則表達式的方法和創(chuàng)建數(shù)學表達式的方法一樣觉吭。也就是用多種元字符與運算符可以將小的表達式結(jié)合在一起來創(chuàng)建更大的表達式腾供。正則表達式的組件可以是單個的字符、字符集合鲜滩、字符范圍伴鳖、字符間的選擇或者所有這些組件的任意組合。
- 正則表達式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式徙硅。
-
普通字符:包括沒有顯式指定為元字符的所有可打印和不可打印字符榜聂。這包括所有大寫和小寫字母、所有數(shù)字嗓蘑、所有標點符號和一些其他符號须肆。
不可打印字符:
不可打印字符 -
特殊字符:也就是一些有特殊含義的字符。
如下圖:
特殊字符 -
限定符:用來指定正則表達式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配。有或+或?或{n}或{n,}或{n,m}共6種佛嬉。*
如下圖:
限定符 -
定位符:使您能夠?qū)⒄齽t表達式固定到行首或行尾逻澳。它們還使您能夠創(chuàng)建這樣的正則表達式,這些正則表達式出現(xiàn)在一個單詞內(nèi)暖呕、在一個單詞的開頭或者一個單詞的結(jié)尾斜做。它用來描述字符串或單詞的邊界,^和$分別指字符串的開始與結(jié)束湾揽,\b描述單詞的前或后邊界瓤逼,\B表示非單詞邊界。
如圖:
定位符 - 選擇:用圓括號將所有選擇項括起來钝腺,相鄰的選擇項之間用|分隔抛姑。但用圓括號會有一個副作用赞厕,是相關(guān)的匹配會被緩存艳狐,此時可用?:放在第一個選項前來消除這種副作用。
其中?:是非捕獲元之一皿桑,還有兩個非捕獲元是?=和?!毫目,這兩個還有更多的含義蔬啡,前者為正向預查,在任何開始匹配圓括號內(nèi)的正則表達式模式的位置來匹配搜索字符串镀虐,后者為負向預查箱蟆,在任何開始不匹配該正則表達式模式的位置來匹配搜索字符串。 - 反向應用:對一個正則表達式模式或部分模式兩邊添加圓括號將導致相關(guān)匹配存儲到一個臨時緩沖區(qū)中刮便,所捕獲的每個子匹配都按照在正則表達式模式中從左到右出現(xiàn)的順序存儲空猜。緩沖區(qū)編號從 1 開始,最多可存儲 99 個捕獲的子表達式恨旱。每個緩沖區(qū)都可以使用 '\n' 訪問辈毯,其中 n 為一個標識特定緩沖區(qū)的一位或兩位十進制數(shù)
元字符
元字符匯總
運算符優(yōu)先級
正則表達式從左到右進行計算,并遵循優(yōu)先級順序搜贤,這與算術(shù)表達式非常類似谆沃。
相同優(yōu)先級的從左到右進行運算,不同優(yōu)先級的運算先高后低仪芒。下表從最高到最低說明了各種正則表達式運算符的優(yōu)先級順序:
運算符的優(yōu)先級
匹配規(guī)則
- 基本模式匹配
一切從最基本的開始唁影。模式,是正規(guī)表達式最基本的元素掂名,它們是一組描述字符串特征的字符据沈。 - 字符簇
在INTERNET的程序中,正規(guī)表達式通常用來驗證用戶的輸入饺蔑。當用戶提交一個FORM以后卓舵,要判斷輸入的電話號碼、地址膀钠、EMAIL地址掏湾、信用卡號碼等是否有效,用普通的基于字面的字符是不夠的肿嘲。
所以要用一種更自由的描述我們要的模式的辦法融击,它就是字符簇。要建立一個表示所有元音字符的字符簇雳窟,就把所有的元音字符放在一個方括號里 - 確定重復出現(xiàn)
如果要匹配一個單詞或一組數(shù)字尊浪。一個單詞有若干個字母組成,一組數(shù)字有若干個單數(shù)組成封救。跟在字符或字符簇后面的花括號({})用來確定前面的內(nèi)容的重復出現(xiàn)的次數(shù)