Python正則表達式初識(六)
繼續分享Python正則表達式基礎,今天給大家分享的正則表達式特殊符號是“[]”。中括號十分實用,其有特殊含義,其代表的意思是中括號中的字符只要滿足其中任意一個就可以。其用法一共有三種,分別對其進行具體的代碼演示,在最後進行總結,具體的教程如下。
1、如下圖所示,匹配模式為[abcd],在這裏正則表達式代表的意思是字符串第一個字符是abcd四個字符中的任意一個,然後後面的字符是“cpeng123”,如果滿足匹配條件,則輸出結果,如果不滿足,則不顯示任何結果,如下圖所示。
很顯然原始字符串的第一個字符是d,和匹配模式相接,所以輸出結果。
2、為了更好的加強理解,現在將原始字符串改為“acpeng123”,其他部分不做改動,如下圖所示。
可以看到匹配的結果是“acpeng123”,匹配成功。
3、為進一步理解中括號的意思,現在將原始字符串改為“ecpeng123”,其他部分不做改動,如下圖所示。
此時可以看到沒有任何結果輸出,因為在中括號中沒有對應的匹配字符,滿足不了匹配要求,所以無任何輸出。
4、看下面一個例子,提取電話號碼,這個在實際應用中十分常見。在這裏介紹中括號的另外一種表達方式即[0-9],這個特殊字符代表的意思是數字0到9中的任意一個字符。下面的匹配模式‘(1[34578][0-9]{9})‘代表的意思是字符串以1開頭,然後第二個字符為3、4、5、7、8中任意一個,之後的字符是0到9中的數字,但是限定為9次,也就是說電話號碼的長度為1+1+9=11位。如果滿足上面的匹配要求,就輸出成功,否則就不輸出任何的字符。
如上圖,很明顯原始字符串滿足匹配的要求,所以有輸出結果。
拓展知識:[a-z]代表26個英文小寫字母;[A-Z]代表26個英文大寫字母。
5、為了進一步加強理解,將原始字符串改為160開頭的號碼,然後進行輸出,如下圖所示。
可以看到無任何輸出結果。
6、中括號的第三章用法是[^],在中括號中加入特殊字符“^”,表示非,取反的意思。舉個栗子,“[^1]”的意思是字符不等於1,下圖是代碼演示。
可以看到原始字符串與匹配模式‘(1[34578][^1]{9})‘匹配成功,因為從第二個字符之後,字符串中就沒有1出現,符合匹配規則。
即便是原始字符串中出現非數字的字符,只要不是1,也能夠匹配成功,如下圖所示。
7、為了加強理解,先將原始字符串中的號碼改為‘18042682515’,在字符串後邊加個1,然後匹配模式不改變,如下圖所示。
可以看到此時無任何輸出結果,因為原始字符串中出現了1,而匹配模式要求不能出現1,所以匹配不成功。
8、最後總結一下特殊字符中括號的用途。一、中括號中的任意一個字符,如[abcd],代表a、b、c、d這四個字符中的任意一個。
二、表示區間,如[0-9],代表數字0到9中的任意一個。同理[a-z],[A-Z],其代表的意思在上面有提及,在此就不再贅述了。
三、表示非或者取反,專有的表達式是[^],如匹配模式[^1]表示匹配的字符不為1。
四、中括號中的“.”,如匹配模式[.]或“*”,如匹配模式[*],就是純粹的代表“.”號和“*”號,不再是代表特殊字符中代表的任意字符或出現多次的意思,這點需要特別註意。
中括號在模式匹配的過程中十分常用,希望小夥伴們都能夠好好理解和掌握。
Python正則表達式初識(六)