shell正則表達(dá)式_第1頁(yè)
已閱讀1頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、作者:笑容作者:笑容前言前言正則表達(dá)式是煩瑣的,但是強(qiáng)大的,學(xué)會(huì)之后的應(yīng)用會(huì)讓你除了提高效率外,會(huì)給你帶來(lái)正則表達(dá)式是煩瑣的,但是強(qiáng)大的,學(xué)會(huì)之后的應(yīng)用會(huì)讓你除了提高效率外,會(huì)給你帶來(lái)絕對(duì)的成就感。只要認(rèn)真去閱讀這些資料,加上應(yīng)用的時(shí)候進(jìn)行一定的參考,掌握正則表絕對(duì)的成就感。只要認(rèn)真去閱讀這些資料,加上應(yīng)用的時(shí)候進(jìn)行一定的參考,掌握正則表達(dá)式不是問(wèn)題。達(dá)式不是問(wèn)題。索引索引1._引子引子2._正則表達(dá)式的歷史正則表達(dá)式的歷史3._正則表

2、達(dá)式定義正則表達(dá)式定義3.1_普通字符普通字符3.2_非打印字符非打印字符3.3_特殊字符特殊字符3.4_限定符限定符3.5_定位符定位符3.6_選擇選擇3.7_后向引用后向引用4._各種操作符的運(yùn)算優(yōu)先級(jí)各種操作符的運(yùn)算優(yōu)先級(jí)5._全部符號(hào)解釋全部符號(hào)解釋6._部分例子部分例子7._正則表達(dá)式匹配規(guī)則正則表達(dá)式匹配規(guī)則7.1_基本模式匹配基本模式匹配7.2_字符簇字符簇7.3_確定重復(fù)出現(xiàn)確定重復(fù)出現(xiàn)1.引子引子目前,正則表達(dá)式已經(jīng)在

3、很多軟件中得到廣泛的應(yīng)用,包括目前,正則表達(dá)式已經(jīng)在很多軟件中得到廣泛的應(yīng)用,包括nix(LinuxUnix等)等),HP等操作系統(tǒng),等操作系統(tǒng),PHP,C#,Java等開(kāi)發(fā)環(huán)境,以及很多的應(yīng)用軟件中,都可以看到等開(kāi)發(fā)環(huán)境,以及很多的應(yīng)用軟件中,都可以看到正則表達(dá)式的影子。正則表達(dá)式的影子。正則表達(dá)式的使用,可以通過(guò)簡(jiǎn)單的辦法來(lái)實(shí)現(xiàn)強(qiáng)大的功能。為了簡(jiǎn)單有效而又不失正則表達(dá)式的使用,可以通過(guò)簡(jiǎn)單的辦法來(lái)實(shí)現(xiàn)強(qiáng)大的功能。為了簡(jiǎn)單有效而又不失

4、強(qiáng)大,造成了正則表達(dá)式代碼的難度較大,學(xué)習(xí)起來(lái)也不是很容易,所以需要付出一些努強(qiáng)大,造成了正則表達(dá)式代碼的難度較大,學(xué)習(xí)起來(lái)也不是很容易,所以需要付出一些努力才行,入門(mén)之后參照一定的參考,使用起來(lái)還是比較簡(jiǎn)單有效的。力才行,入門(mén)之后參照一定的參考,使用起來(lái)還是比較簡(jiǎn)單有效的。例子:例子:^.@...$這樣的代碼曾經(jīng)多次把我自己給嚇退過(guò)??赡芎芏嗳艘彩潜贿@樣的代碼給嚇跑的吧。這樣的代碼曾經(jīng)多次把我自己給嚇退過(guò)??赡芎芏嗳艘彩潜贿@樣的代碼給

5、嚇跑的吧。繼續(xù)閱讀本文將讓你也可以自由應(yīng)用這樣的代碼。繼續(xù)閱讀本文將讓你也可以自由應(yīng)用這樣的代碼。注意:這里的第注意:這里的第7部分跟前面的內(nèi)容看起來(lái)似乎有些重復(fù),目的是把前面表格里的部部分跟前面的內(nèi)容看起來(lái)似乎有些重復(fù),目的是把前面表格里的部分重新描述了一次,目的是讓這些內(nèi)容更容易理解。分重新描述了一次,目的是讓這些內(nèi)容更容易理解。2.正則表達(dá)式的歷史正則表達(dá)式的歷史正則表達(dá)式的正則表達(dá)式的“祖先祖先”可以一直上溯至對(duì)人類(lèi)神經(jīng)系統(tǒng)如何

6、工作的早期研究??梢砸恢鄙纤葜翆?duì)人類(lèi)神經(jīng)系統(tǒng)如何工作的早期研究。WarrenMcCulloch和WalterPitts這兩位神經(jīng)生理學(xué)家研究出一種數(shù)學(xué)方式來(lái)描述這些神這兩位神經(jīng)生理學(xué)家研究出一種數(shù)學(xué)方式來(lái)描述這些神經(jīng)網(wǎng)絡(luò)。經(jīng)網(wǎng)絡(luò)。1956年一位叫一位叫StephenKleene的數(shù)學(xué)家在的數(shù)學(xué)家在McCulloch和Pitts早期工早期工作的基礎(chǔ)上,發(fā)表了一篇標(biāo)題為作的基礎(chǔ)上,發(fā)表了一篇標(biāo)題為“神經(jīng)網(wǎng)事件的表示法神經(jīng)網(wǎng)事件的表示法”的論

7、文,引入了正則表達(dá)式的概念。的論文,引入了正則表達(dá)式的概念。正則表達(dá)式就是用來(lái)描述他稱(chēng)為正則表達(dá)式就是用來(lái)描述他稱(chēng)為“正則集的代數(shù)正則集的代數(shù)”的表達(dá)式,因此采用的表達(dá)式,因此采用“正則表達(dá)式正則表達(dá)式”這個(gè)術(shù)這個(gè)術(shù)語(yǔ)。語(yǔ)。用。將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。例如,將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。例如,n匹配字符匹配字符n。n匹配換行符。序列匹配換行符。序列匹配

8、匹配““,而,而(則匹配則匹配“(“。^匹配輸入字符串的開(kāi)始位置,除非在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符匹配輸入字符串的開(kāi)始位置,除非在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符集合。要匹配集合。要匹配^字符本身,請(qǐng)使用字符本身,請(qǐng)使用^。標(biāo)記限定符表達(dá)式的開(kāi)始。要匹配標(biāo)記限定符表達(dá)式的開(kāi)始。要匹配,請(qǐng)使用,請(qǐng)使用。|指明兩項(xiàng)之間的一個(gè)選擇。要匹配指明兩項(xiàng)之間的一個(gè)選擇。要匹配|,請(qǐng)使用,請(qǐng)使用|。構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)

9、學(xué)表達(dá)式的方法一樣。也就是用多種元字符與操作構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣。也就是用多種元字符與操作符將小的表達(dá)式結(jié)合在一起來(lái)創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個(gè)的字符、符將小的表達(dá)式結(jié)合在一起來(lái)創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個(gè)的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。3.4限定符限定符限定符用來(lái)指定正則表達(dá)式的一個(gè)

10、給定組件必須要出現(xiàn)多少次才能滿(mǎn)足匹配。有限定符用來(lái)指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿(mǎn)足匹配。有或或或n或n或nm共6種。種。、和限定符都是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一限定符都是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一個(gè)就可以實(shí)現(xiàn)非貪婪或最小匹配。就可以實(shí)現(xiàn)非貪婪或最小匹配。正則表達(dá)式的限定符有:正則表達(dá)式的限定符有:字符字符描述描述匹配前面的子表達(dá)式零次或多次。例如,匹

11、配前面的子表達(dá)式零次或多次。例如,zo能匹配能匹配“z“以及以及“zoo“。等價(jià)于等價(jià)于0。匹配前面的子表達(dá)式一次或多次。例如,匹配前面的子表達(dá)式一次或多次。例如,zo能匹配能匹配“zo“以及以及“zoo“,但不,但不能匹配能匹配“z“。等價(jià)于等價(jià)于1。匹配前面的子表達(dá)式零次或一次。例如,匹配前面的子表達(dá)式零次或一次。例如,“do(es)“可以匹配可以匹配“do“或“does“中的中的“do“。等價(jià)于等價(jià)于01。nn是一個(gè)非負(fù)整數(shù)。匹配

12、確定的是一個(gè)非負(fù)整數(shù)。匹配確定的n次。例如,次。例如,o2不能匹配不能匹配“Bob“中的中的o,但是能匹配,但是能匹配“food“中的兩個(gè)中的兩個(gè)o。nn是一個(gè)非負(fù)整數(shù)。至少匹配是一個(gè)非負(fù)整數(shù)。至少匹配n次。例如,次。例如,o2不能匹配不能匹配“Bob“中的中的o,但能匹配,但能匹配“foooood“中的所有中的所有o。o1等價(jià)于等價(jià)于o。o0則等價(jià)于則等價(jià)于o。nmm和n均為非負(fù)整數(shù),其中均為非負(fù)整數(shù),其中n=m。最少匹配。最少匹配n

13、次且最多匹配次且最多匹配m次。次。例如,例如,“o13“將匹配將匹配“fooooood“中的前三個(gè)中的前三個(gè)o。o01等價(jià)于等價(jià)于o。請(qǐng)。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。3.5定位符定位符用來(lái)描述字符串或單詞的邊界,用來(lái)描述字符串或單詞的邊界,^和$分別指字符串的開(kāi)始與結(jié)束,分別指字符串的開(kāi)始與結(jié)束,b描述單詞的前描述單詞的前或后邊界,或后邊界,B表示非單詞邊界。不能對(duì)定位符使用限定符。表示非單詞邊

14、界。不能對(duì)定位符使用限定符。3.6選擇選擇用圓括號(hào)將所有選擇項(xiàng)括起來(lái),相鄰的選擇項(xiàng)之間用用圓括號(hào)將所有選擇項(xiàng)括起來(lái),相鄰的選擇項(xiàng)之間用|分隔。但用圓括號(hào)會(huì)有一個(gè)副作分隔。但用圓括號(hào)會(huì)有一個(gè)副作用,是相關(guān)的匹配會(huì)被緩存,此時(shí)可用用,是相關(guān)的匹配會(huì)被緩存,此時(shí)可用:放在第一個(gè)選項(xiàng)前來(lái)消除這種副作用。放在第一個(gè)選項(xiàng)前來(lái)消除這種副作用。其中其中:是非捕獲元之一,還有兩個(gè)非捕獲元是是非捕獲元之一,還有兩個(gè)非捕獲元是=和!,這兩個(gè)還有更多的含義,前

15、者,這兩個(gè)還有更多的含義,前者為正向預(yù)查,在任何開(kāi)始匹配圓括號(hào)內(nèi)的正則表達(dá)式模式的位置來(lái)匹配搜索字符串,后者為正向預(yù)查,在任何開(kāi)始匹配圓括號(hào)內(nèi)的正則表達(dá)式模式的位置來(lái)匹配搜索字符串,后者為負(fù)向預(yù)查,在任何開(kāi)始不匹配該正則表達(dá)式模式的位置來(lái)匹配搜索字符串。為負(fù)向預(yù)查,在任何開(kāi)始不匹配該正則表達(dá)式模式的位置來(lái)匹配搜索字符串。3.7后向引用后向引用對(duì)一個(gè)正則表達(dá)式模式或部分模式兩邊添加圓括號(hào)將導(dǎo)致相關(guān)匹配存儲(chǔ)到一個(gè)臨時(shí)緩對(duì)一個(gè)正則表達(dá)式模式或

溫馨提示

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

評(píng)論

0/150

提交評(píng)論