序
這篇是跟大家沒(méi)事聊聊正則表達(dá)式而已,可不要拿這個(gè)當(dāng)學(xué)習(xí)教材啊!——如果看著舒服,那么給Me推薦一下。
正則是什么玩意?
其實(shí)這個(gè)東西就是一個(gè)文本處理工具。記住只是一個(gè)“工具”而已,不要想的太復(fù)雜。
對(duì)于這玩意,能用就用,不能用,咱們就不用他,換個(gè)稱手的家伙。跟殺人一個(gè)道理,如果覺(jué)得槍不好用,那你就用鋤頭,或者刀子。

正則從哪入手?

如果你想了解一個(gè)人身體結(jié)構(gòu),很簡(jiǎn)單:拿刀子把身體解剖開(kāi),就知道里面都有什么了?無(wú)怪乎肉、骨頭,還有水。
現(xiàn)在我們把正則剖開(kāi)來(lái)看,發(fā)現(xiàn)也就是“元字符”和“普通文本字符”組成了正則。怎么玩好正則?就看你怎么拼裝這些字符了。
注意了,既然正則是由字符構(gòu)成,那我們就要養(yǎng)成用字符理解正則的習(xí)慣。舉個(gè)例子:你是怎么理解^chuanshanjia的?我想你肯是這樣理解的:匹配以chuanshanjia開(kāi)頭的行。——這么組織語(yǔ)言,讓腦袋轉(zhuǎn)了幾下,費(fèi)腦子。而字符理解是:先匹配一個(gè)行開(kāi)頭^,緊接著是c、h、u、a、n、s、h、a、n、j、i、a字符的行。——腦子不用轉(zhuǎn),挨著往下看就行了。
行的起始和結(jié)束
現(xiàn)在具體來(lái)說(shuō)說(shuō):
^(脫字符號(hào)),代表一行的行首。記住這個(gè)符號(hào)代表的是行文本中的一個(gè)位置。——只是位置而已。
用“脫”這個(gè)字?搞不明白,難道在一個(gè)字符的前面放這么一個(gè)符號(hào),就表示后面的字符要脫什么東西了?——你可以這么理解,做那事的時(shí)候,首先得把衣服脫了,要不然,你們?cè)趺撮_(kāi)始?^_^

$(美元符號(hào)),代表一行的行尾。理解了^,這個(gè)自然好理解了。也僅僅表示文本行的位置。——干完事記著付錢(qián)啊,而且要給美元($)!^_^
注意了:脫字符和美元符,它們匹配的是一個(gè)位置,而不是什么具體的文本字符。
字符組

現(xiàn)在幻想一下:如果你是選美比賽的評(píng)委,現(xiàn)在有美女,編號(hào)是:A、B、C、D、E、F......。你看上了其中幾個(gè)美女,想潛規(guī)則她們,那么你就會(huì)拿出一張小紙條,上面寫(xiě)上A、E、C。然后讓手底下的人,去把這幾個(gè)美女帶上來(lái)。然后后面的事你就想吧......
字符組就相當(dāng)于你拿出的那張小紙條。它的功能就是把你想要的字符放到里面。我們把這個(gè)小紙條用“【】”表示。
現(xiàn)在給你寫(xiě)個(gè)例子:
我準(zhǔn)備了一張美女名單表(meinv.txt):
美女如下: number:A 身高:170cm 年齡:20 number:B 身高:180cm 年齡:22 number:C 身高:172cm 年齡:23 number:D 身高:179cm 年齡:18 number:E 身高:171cm 年齡:30 number:F 身高:173cm 年齡:23 number:G 身高:190cm 年齡:22
看好了,我要潛規(guī)則了!暫且讓egrep當(dāng)你的手下吧。
zhoubaochuan@baochuan:~/workspace/shell$ egrep 'number:[AEC]' meinv.txt number:A 身高:170cm 年齡:20 number:C 身高:172cm 年齡:23 number:E 身高:171cm 年齡:30
是不是得到了你想要的美女了?只要把美女的編號(hào)寫(xiě)到小紙條(【】)里,egrep就把你要的美女給你送上來(lái)了。
字符組的元字符

現(xiàn)在幻想一下,你是個(gè)極其懶惰的家伙。 你不想親自去挑你想要的美女?你只想把比賽的前四名潛規(guī)則了。而現(xiàn)在很走運(yùn),其中編號(hào)是B、C、D、E四個(gè)美女獲得了前四名。現(xiàn)在你又把你的小紙條拿出來(lái)了,直接在上面寫(xiě)個(gè)范圍,你的手下(egrep)就把這幾個(gè)美女給你送上來(lái)了。
zhoubaochuan@baochuan:~/workspace/shell$ egrep 'number:[B-E]' meinv.txt number:B 身高:180cm 年齡:22 number:C 身高:172cm 年齡:23 number:D 身高:179cm 年齡:18 number:E 身高:171cm 年齡:30
看到?jīng)]有,這里的“-”(連字符),就表示B到E之間所有字符。它表示一個(gè)范圍。它跟[BCDE]是一樣的。
以下是常用的:
表示數(shù)字范圍的[0-9];
表示字母范圍的[a-zA-Z]。
總結(jié)
由于篇幅所限,暫時(shí)寫(xiě)到此處。若有不當(dāng)之處,望請(qǐng)指教。
推薦

喜歡編程
浙公網(wǎng)安備 33010602011771號(hào)