輕鬆掌握正則表示式(3)
二 、匹配一組字元
1、匹配多個字元中的某一個
這裡再引入一組字元符號: [ 和 ] (一組中括號):他們的作用是定義一個字元集合。如: [abcdefg] ,這個字元集合在正則表示式中的含義就是匹配 [ 和 ]中的任意一個字母,即匹配abcdefg中的任意一個。
舉例如下:
文字:
home.txt
Home.txt
正則表示式:
[Hh]me.txt
結果:
home.txt
Home.txt
[Hh]om.txt 中的字元集合[Hh]的含義是匹配任意一個,即,可以是Home.txt 也可以是home.txt 。 是不是有小夥伴會鑽牛角尖了,會想,為什麼不是Hhome.txt ? ? ? 這點要注意,字元集合[和]中的內容每次只能匹配一個。
比如你可以新增的這樣的文字: Hhome.txt 和hHome.txt 。然後正則表示式不變,你看看是什麼效果?
2、利用字元區間集合
在使用正則表示式的時候,會使用 到一些字元區間,比如0~9或者a~z、A~Z,通過上面的字元集合的知識。可以這樣來定義字元區間:[0123456789] 或[abcdef……z]可以起到定義字元區間的作用,但是在正則表示式中,我們一般不這樣寫,正確的寫法是 [0-9](等價於[0123456789])字母幾個的道理也是一樣的。
注意: -(連字元)只在 [ 和 ]中才是一個元字元,表示一個字元區間,離開了[ ] -(連字元)值表示一個 普通字元且匹配自身
舉例子如下:
文字:
Home.txt
home.txt
Home1.txt
home2.txt
home3.txt
Home0.txt
home4.txt
正則表示式
[Hh]me[0-5].txt
結果:
Home1.txt
home2.txt
home3.txt
Home0.txt
home4.txt
Home.txt和home.txt不滿足正則表示式,所以沒有被匹配進來。
3、取非匹配
什麼叫區非匹配,這就想java中的!一樣。就是處了這個表示式,其他的都可以滿足。比如: [^0-9] 意思就是除了數字0~9其他的字元都可以匹配
舉例如下:
文字:
Home1.txt
home2.txt
home3.txt
Home0.txt
home4.txt
Home5.txt
Home6.txt
home7.txt
home8.txt
Home9.txt
正則表示式:
[Hh]ome[^0-5].txt
結果:
Home6.txt
home7.txt
home8.txt
Home9.txt
注意:
(1) [ 和^ 之間是沒有空格的,即^(異或)是緊跟著 [ 的。
(2) 所有的正則表達中都對空格敏感,你輸入 \ . (反斜槓加點 )表示對元字元 . 進行轉義,但是你如果在反斜槓和點之間加了一個空格,那正則表示式的含義就變成了 匹配文字中的\ 和 “ ”(空格)和任意一個字元了。
總結:
(1)[ 和 ] 表示一個字元集合。可以匹配字元集合中的任意一個字元
(2) 元字元 - (連字元)只能用在 [ ] 中,用在其他地方只表示一個普通的字元,且匹配自身
(3) [0-9]、[a-z]、[A-Z] 等表示匹配一個字元區間中的熱議一個字元
(4) 正則表示式對空格敏感 在正則表示式中會將空格當做一個字元來處理。