資源描述:
《正則表達式經(jīng)典手冊.pdf》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、引言正則表達式(regularexpression)就是用一個“表達式”來描述一個特征,然后去驗證另一個“字符串”是否符合這個特征。比如表達式“ab+”描述的特征是“一個'a'和任意個'b'”,那么'ab','abb','abbbbbbbbbb'都符合這個特征。正則表達式可以用來:(1)驗證字符串是否符合指定特征,比如驗證是否是合法的郵件地址。(2)用來查找字符串,從一個長的文本中查找符合指定特征的字符串,比查找固定字符串更加靈活方便。(3)用來替換,比普通的替換更強大。正則表達式學(xué)習(xí)起來其實是很簡單的,不多的幾個較為抽象的概念
2、也很容易理解。之所以很多人感覺正則表達式比較復(fù)雜,一方面是因為大多數(shù)的文檔沒有做到由淺入深地講解,概念上沒有注意先后順序,給讀者的理解帶來困難;另一方面,各種引擎自帶的文檔一般都要介紹它特有的功能,然而這部分特有的功能并不是我們首先要理解的。文章中的每一個舉例,都可以點擊進入到測試頁面進行測試。閑話少說,開始。1.正則表達式規(guī)則1.1普通字符字母、數(shù)字、漢字、下劃線、以及后邊章節(jié)中沒有特殊定義的標點符號,都是"普通字符"。表達式中的普通字符,在匹配一個字符串的時候,匹配與之相同的一個字符。舉例1:表達式"c",在匹配字符串"ab
3、cde"時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"c";匹配到的位置是:開始于2,結(jié)束于3。(注:下標從0開始還是從1開始,因當前編程語言的不同而可能不同)舉例2:表達式"bcd",在匹配字符串"abcde"時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"bcd";匹配到的位置是:開始于1,結(jié)束于4。1.2簡單的轉(zhuǎn)義字符一些不便書寫的字符,采用在前面加""的方法。這些字符其實我們都已經(jīng)熟知了。表達式可匹配r,代表回車和換行符t制表符\代表""本身還有其他一些在后邊章節(jié)中有特殊用處的標點符號,在前面加""后,就代表該符號本身
4、。比如:^,$都有特殊意義,如果要想匹配字符串中"^"和"$"字符,則表達式就需要寫成"^"和"$"。表達式可匹配^匹配^符號本身$匹配$符號本身.匹配小數(shù)點(.)本身這些轉(zhuǎn)義字符的匹配方法與"普通字符"是類似的。也是匹配與之相同的一個字符。舉例1:表達式"$d",在匹配字符串"abc$de"時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"$d";匹配到的位置是:開始于3,結(jié)束于5。1.3能夠與'多種字符'匹配的表達式正則表達式中的一些表示方法,可以匹配'多種字符'其中的任意一個字符。比如,表達式"d"可以匹配任意一個數(shù)字
5、。雖然可以匹配其中任意字符,但是只能是一個,不是多個。這就好比玩撲克牌時候,大小王可以代替任意一張牌,但是只能代替一張牌。表達式可匹配d任意一個數(shù)字,0~9中的任意一個w任意一個字母或數(shù)字或下劃線,也就是A~Z,a~z,0~9,_中任意一個s包括空格、制表符、換頁符等空白字符的其中任意一個.小數(shù)點可以匹配除了換行符()以外的任意一個字符舉例1:表達式"dd",在匹配"abc123"時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"12";匹配到的位置是:開始于3,結(jié)束于5。舉例2:表達式"a.d",在匹配"aaa100"
6、時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"aa1";匹配到的位置是:開始于1,結(jié)束于4。1.4自定義能夠匹配'多種字符'的表達式使用方括號[]包含一系列字符,能夠匹配其中任意一個字符。用[^]包含一系列字符,則能夠匹配其中字符之外的任意一個字符。同樣的道理,雖然可以匹配其中任意一個,但是只能是一個,不是多個。表達式可匹配[ab5@]匹配"a"或"b"或"5"或"@"[^abc]匹配"a","b","c"之外的任意一個字符[f-k]匹配"f"~"k"之間的任意一個字母[^A-F0-3]匹配"A"~"F","0"~"3"之外的任意一
7、個字符舉例1:表達式"[bcd][bcd]"匹配"abc123"時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"bc";匹配到的位置是:開始于1,結(jié)束于3。舉例2:表達式"[^abc]"匹配"abc123"時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"1";匹配到的位置是:開始于3,結(jié)束于4。1.5修飾匹配次數(shù)的特殊符號前面章節(jié)中講到的表達式,無論是只能匹配一種字符的表達式,還是可以匹配多種字符其中任意一個的表達式,都只能匹配一次。如果使用表達式后面再加上修飾匹配次數(shù)的特殊符號,那么不用重復(fù)書寫表達式就可以重復(fù)匹配。使用方法是:"次數(shù)修飾
8、"放在"被修飾的表達式"后邊。比如:"[bcd][bcd]"可以寫成"[bcd]{2}"。表達式作用{n}表達式重復(fù)n次,比如:"w{2}"相當于"ww";"a{5}"相當于"aaaaa"{m,n}表達式至少重復(fù)m次,最多重復(fù)n次,比如:"ba{1,3}"