Perl正則表達(dá)式的八大原則
本文和大家重點(diǎn)討論一下Perl正則表達(dá)式的概念,Perl正則表達(dá)式是初學(xué)Perl的難點(diǎn)所在,不過(guò)只要一旦掌握其語(yǔ)法,你就可以擁有幾乎無(wú)限的模式匹配能力,而且Perl編程的大部分工作都是掌握常規(guī)表達(dá)式。
Perl正則表達(dá)式的八大原則
如果在Unix中曾經(jīng)使用過(guò)sed、awk、grep這些命令的話,相信對(duì)于Perl語(yǔ)言中的Perl正則表達(dá)式(RegularExpression)不會(huì)感到陌生。Perl語(yǔ)言由于有這個(gè)功能,所以對(duì)字符串的處理能力非常強(qiáng)。在Perl語(yǔ)言的程序中,經(jīng)??梢钥吹絇erl正則表達(dá)式的運(yùn)用,在CGI程序設(shè)計(jì)中也不例外。
Perl正則表達(dá)式是初學(xué)Perl的難點(diǎn)所在,不過(guò)只要一旦掌握其語(yǔ)法,你就可以擁有幾乎無(wú)限的模式匹配能力,而且Perl編程的大部分工作都是掌握常規(guī)表達(dá)式。下面給大家介紹幾條Perl正則表達(dá)式使用過(guò)程中的8大原則。
Perl正則表達(dá)式在對(duì)付數(shù)據(jù)的戰(zhàn)斗中可形成龐大的聯(lián)盟——這常常是一場(chǎng)戰(zhàn)爭(zhēng)。我們要記住下面八條原則:
◆原則1:Perl正則表達(dá)式有三種不同形式(匹配(m//),替換(s///eg)和轉(zhuǎn)換(tr///))。
◆原則2:Perl正則表達(dá)式僅對(duì)標(biāo)量進(jìn)行匹配($scalar=~m/a/;可以工作;@array=~m/a/將把@array作為標(biāo)量對(duì)待,因此可能不會(huì)成功)。
◆原則3:Perl正則表達(dá)式匹配一個(gè)給定模式的最早的可能匹配。缺省時(shí),僅匹配或替換Perl正則表達(dá)式一次($a='stringstring2';$a=~s/string//;導(dǎo)致$a='string2')。
◆原則4:Perl正則表達(dá)式能夠處理雙引號(hào)所能處理的任意和全部字符($a=~m/$varb/在匹配前把varb擴(kuò)展為變量;如果$varb='a'$a='as',$a=~s/$varb//;等價(jià)于$a=~s/a//;,執(zhí)行結(jié)果使$a="s")。
◆原則5:Perl正則表達(dá)式在求值過(guò)程中產(chǎn)生兩種情況:結(jié)果狀態(tài)和反向引用:$a=~m/pattern/表示$a中是否有子串pattern出現(xiàn),$a=~s/(word1)(word2)/$2$1/則“調(diào)換”這兩個(gè)單詞。
◆原則6:Perl正則表達(dá)式的核心能力在于通配符和多重匹配運(yùn)算符以及它們?nèi)绾尾僮鳌?a=~m/\w+/匹配一個(gè)或多個(gè)單詞字符;$a=~m/\d/"匹配零個(gè)或多個(gè)數(shù)字。
◆原則7:如果欲匹配不止一個(gè)字符集合,Perl使用"|"來(lái)增加靈活性。如果輸入m/(cat|dog)/則相當(dāng)于“匹配字符串cat或者dog。
◆原則8:Perl用(?..)語(yǔ)法給Perl正則表達(dá)式提供擴(kuò)展功能。(這一點(diǎn)請(qǐng)同學(xué)們課后看相關(guān)資料)
想要學(xué)習(xí)所有這些原則?我建議大家先從簡(jiǎn)單的開(kāi)始,并且不斷的嘗試和實(shí)驗(yàn)。實(shí)際上如果學(xué)會(huì)了$a=~m/ERROR/是在$a中查找子串ERROR,那么你就已經(jīng)比在C這樣的低層語(yǔ)言中得到了更大的處理能力。
【編輯推薦】
- Perl正則表達(dá)式的三種形式
- 解析Perl面向?qū)ο缶幊痰膬煞N實(shí)現(xiàn)方式
- Perl二維數(shù)組用法全程剖析
- 學(xué)習(xí)筆記 全面認(rèn)識(shí)Perl正則表達(dá)式
- Perl正則表達(dá)式的三種形式和八大原則