1. 程式人生 > >正則表示式的一些常見字元

正則表示式的一些常見字元

1.1 普通字元

    字母、數字、漢字、下劃線、以及後邊章節中沒有特殊定義的標點符號,都是"普通字元"。表示式中的普通字元,在匹配一個字串的時候,匹配與之相同的一個字元。

    舉例1:表示式 "c",在匹配字串 "abcde" 時,匹配結果是:成功;匹配到的內容是:"c";匹配到的位置是:開始於2,結束於3。(注:下標從0開始還是從1開始,因當前程式語言的不同而可能不同)

    舉例2:表示式 "bcd",在匹配字串 "abcde" 時,匹配結果是:成功;匹配到的內容是:"bcd";匹配到的位置是:開始於1,結束於4。

1.2 簡單的轉義字元

    一些不便書寫的字元,採用在前面加 "\" 的方法。這些字元其實我們都已經熟知了。

表示式

可匹配

\r, \n

代表回車和換行符

\t

製表符

\\

代表 "\" 本身

    還有其他一些在後邊章節中有特殊用處的標點符號,在前面加 "\" 後,就代表該符號本身。比如:^, $ 都有特殊意義,如果要想匹配字串中 "^" 和 "$" 字元,則表示式就需要寫成 "\^" 和 "\$"。

表示式

可匹配

\^

匹配 ^ 符號本身

\$

匹配 $ 符號本身

\.

匹配小數點(.)本身

    這些轉義字元的匹配方法與 "普通字元" 是類似的。也是匹配與之相同的一個字元。

    舉例1:表示式 "\$d",在匹配字串 "abc$de" 時,匹配結果是:成功;匹配到的內容是:"$d";匹配到的位置是:開始於3,結束於5。

1.3 能夠與 '多種字元' 匹配的表示式

    正則表示式中的一些表示方法,可以匹配 '多種字元' 其中的任意一個字元。比如,表示式 "\d" 可以匹配任意一個數字。雖然可以匹配其中任意字元,但是隻能是一個,不是多個。這就好比玩撲克牌時候,大小王可以代替任意一張牌,但是隻能代替一張牌。

表示式

可匹配

\d

任意一個數字,0~9 中的任意一個

\w

任意一個字母或數字或下劃線,也就是 A~Z,a~z,0~9,_ 中任意一個

\s

包括空格、製表符、換頁符等空白字元的其中任意一個

.

小數點可以匹配除了換行符(\n)以外的任意一個字元

    舉例1:表示式 "\d\d",在匹配 "abc123" 時,匹配的結果是:成功;匹配到的內容是:"12";匹配到的位置是:開始於3,結束於5。

    舉例2:表示式 "a.\d",在匹配 "aaa100" 時,匹配的結果是:成功;匹配到的內容是:"aa1";匹配到的位置是:開始於1,結束於4。

1.4 自定義能夠匹配 '多種字元' 的表示式

    使用方括號 [ ] 包含一系列字元,能夠匹配其中任意一個字元。用 [^ ] 包含一系列字元,則能夠匹配其中字元之外的任意一個字元。同樣的道理,雖然可以匹配其中任意一個,但是隻能是一個,不是多個。

表示式

可匹配

[[email protected]]

匹配 "a" 或 "b" 或 "5" 或 "@"

[^abc]

匹配 "a","b","c" 之外的任意一個字元

[f-k]

匹配 "f"~"k" 之間的任意一個字母

[^A-F0-3]

匹配 "A"~"F","0"~"3" 之外的任意一個字元

    舉例1:表示式 "[bcd][bcd]" 匹配 "abc123" 時,匹配的結果是:成功;匹配到的內容是:"bc";匹配到的位置是:開始於1,結束於3。

    舉例2:表示式 "[^abc]" 匹配 "abc123" 時,匹配的結果是:成功;匹配到的內容是:"1";匹配到的位置是:開始於3,結束於4。

1.5 修飾匹配次數的特殊符號

    前面章節中講到的表示式,無論是隻能匹配一種字元的表示式,還是可以匹配多種字元其中任意一個的表示式,都只能匹配一次。如果使用表示式再加上修飾匹配次數的特殊符號,那麼不用重複書寫表示式就可以重複匹配。

    使用方法是:"次數修飾"放在"被修飾的表示式"後邊。比如:"[bcd][bcd]" 可以寫成 "[bcd]{2}"。

表示式

作用

{n}

表示式重複n次,比如:"\w{2}" 相當於 "\w\w";"a{5}" 相當於 "aaaaa"

{m,n}

表示式至少重複m次,最多重複n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"

{m,}

表示式至少重複m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"...

?

匹配表示式0次或者1次,相當於 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

+

表示式至少出現1次,相當於 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...

*

表示式不出現或出現任意次,相當於 {0,},比如:"\^*b"可以匹配 "b","^^^b"...

    舉例1:表示式 "\d+\.?\d*" 在匹配 "It costs $12.5" 時,匹配的結果是:成功;匹配到的內容是:"12.5";匹配到的位置是:開始於10,結束於14。

    舉例2:表示式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 時,匹配的結果是:成功;匹配到的內容是:"goooooogle";匹配到的位置是:開始於7,結束於17。