1. 程式人生 > >輕鬆掌握正則表示式(3)

輕鬆掌握正則表示式(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) 正則表示式對空格敏感 在正則表示式中會將空格當做一個字元來處理。