正則表示式的一些常見字元
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 自定義能夠匹配 '多種字元' 的表示式
使用方括號 [ ] 包含一系列字元,能夠匹配其中任意一個字元。用 [^ ] 包含一系列字元,則能夠匹配其中字元之外的任意一個字元。同樣的道理,雖然可以匹配其中任意一個,但是隻能是一個,不是多個。
表示式
可匹配
匹配 "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。