序
這篇是跟大家沒事聊聊正則表達式而已,可不要拿這個當學習教材啊!——
如果看着舒服,那么給Me推薦一下。
正則是什么玩意?
其實這個東西就是一個文本處理工具。記住只是一個“工具”而已,不要想的太復雜。
對於這玩意,能用就用,不能用,咱們就不用他,換個稱手的家伙。跟殺人一個道理,如果覺得槍不好用,那你就用鋤頭,或者刀子。
正則從哪入手?
如果你想了解一個人身體結構,很簡單:拿刀子把身體解剖開,就知道里面都有什么了?無怪乎肉、骨頭,還有水。
現在我們把正則剖開來看,發現也就是“元字符”和“普通文本字符”組成了正則。怎么玩好正則?就看你怎么拼裝這些字符了。
注意了,既然正則是由字符構成,那我們就要養成用 字符理解正則的習慣。舉個例子:你是怎么理解^chuanshanjia的?我想你肯是這樣理解的:匹配以chuanshanjia開頭的行。——這么組織語言,讓腦袋轉了幾下,費腦子。而字符理解是:先匹配一個行開頭^, 緊接着是c、h、u、a、n、s、h、a、n、j、i、a字符的行。——腦子不用轉,挨着往下看就行了。
行的起始和結束
現在具體來說說:
^(脫字符號),代表一行的行首。記住這個符號代表的是行文本中的一個位置。——只是位置而已。
用“脫”這個字?搞不明白,難道在一個字符的前面放這么一個符號,就表示后面的字符要脫什么東西了?——你可以這么理解,做那事的時候,首先得把衣服脫了,要不然,你們怎么開始?^_^
$(美元符號),代表一行的行尾。理解了^,這個自然好理解了。也僅僅表示文本行的位置。——干完事記着付錢啊,而且要給美元($)!^_^
注意了:脫字符和美元符,它們匹配的是一個 位置,而不是什么具體的文本字符。
字符組
現在幻想一下:如果你是選美比賽的評委,現在有美女,編號是:A、B、C、D、E、F......。你看上了其中幾個美女,想潛規則她們,那么你就會拿出一張小紙條,上面寫上A、E、C。然后讓手底下的人,去把這幾個美女帶上來。然后后面的事你就想吧......
字符組就相當於你拿出的那張小紙條。它的功能就是把你想要的字符放到里面。我們把這個小紙條用“【】”表示。
現在給你寫個例子:
我准備了一張美女名單表(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
看好了,我要潛規則了!暫且讓egrep當你的手下吧。
zhoubaochuan@baochuan:~/workspace/shell$ egrep 'number:[AEC]' meinv.txt number:A 身高:170cm 年齡:20 number:C 身高:172cm 年齡:23 number:E 身高:171cm 年齡:30
是不是得到了你想要的美女了?只要把美女的編號寫到小紙條(【】)里,egrep就把你要的美女給你送上來了。
字符組的元字符

現在幻想一下,你是個極其懶惰的家伙。 你不想親自去挑你想要的美女?你只想把比賽的前四名潛規則了。而現在很走運,其中編號是B、C、D、E四個美女獲得了前四名。現在你又把你的小紙條拿出來了,直接在上面寫個范圍,你的手下(egrep)就把這幾個美女給你送上來了。
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
看到沒有,這里的“-”(連字符),就表示B到E之間所有字符。它表示一個范圍。它跟[BCDE]是一樣的。
以下是常用的:
表示數字范圍的[0-9];
表示字母范圍的[a-zA-Z]。
總結
由於篇幅所限,暫時寫到此處。若有不當之處,望請指教。
推薦
