正則表達式
正則表達式是由一些字符和特殊符號組成的字符串,他們描述了模式的重復或表述多個字符,於是正則表達式能按照某種模式匹配一系列有相似特征的字符串。也即它們能匹配多個字符串。
常用特殊字符和符號
0.擇一匹配 (|)
| 從多個模式中選擇其一,類似於邏輯或,例如:
正則表達式 | 匹配的字符串 |
apple|orange | apple,orange |
cpp|java|python | cpp,java,python |
1.任意匹配單個字符 (.)
. 匹配除了換行符\n以外的任意字符,例如:
正則表達式 | 匹配的字符串 |
a.c | a(任意字符)c |
.. | 任意兩個字符 |
2.從字符串開始或結尾或單詞邊界匹配(^) ($) (\b) (\B)
^或\A接字符串,表示以該字符串開始(區別:^匹配一行的開始,\A匹配輸入的開始)
$或\Z接字符串,表示以該字符串結尾(同上)
\b接字符串,表示以該字符串開始(區別於^和\A:匹配一個單詞起始部分,不管該單詞前面是否有任何字符。通俗來說:^匹配字符串的開始,\b匹配單詞的開始)
\B接字符串,表示以該字符串為子串但不是邊界
正則表達式 | 匹配的字符串 |
^in | 任何以in開頭的字符串 |
com$ | 任何以com結尾的字符串 |
the | 任何包含the的字符串 |
\bthe | 任何以the開始的字符串 |
\bthe\b | 單詞zhe |
\Bthe | 任何包含但不以the開始的字符串 |
the\B | 任何包含但不以the結尾的字符串 |
3.創建字符集,類似於擇一匹配 ([])
([])用於匹配某些特定字符,區別於(.)匹配任意字符,匹配方括號中包含的任意字符。
正則表達式 | 匹配的字符串 |
c[abcd]d | cad,cbd,ccd,cdd |
[cp][jv][py] | cjp,pjp,cvp,cvy,pjp,pjy |
4.限定范圍或否定 (-) ([^])
方括號中兩個字符以-符號連接表示指定一個范圍,在連接的字符之中。
方括號中緊緊連接^符號表示不匹配給定字符集任一字符
正則表達式 | 匹配的字符串 |
[a-c][d-f] | ad,ae,af,bd,be,bf,cd,ce,cf, |
[^aeiou] | 一個非元音字符 |
[^\t\n] | 不匹配制表符或換行符 |
5.零次,一次或多次匹配(*) (+) (?) ;頻數匹配 {M} {M,N} {M,}
*將匹配其左邊的正則表達式出現零次或多次的情況。
+將匹配其左邊的正則表達式出現一次或多次的情況。
?將匹配其左邊的正則表達式出現零次或一次的情況。
{M}將匹配其左邊的正則表達式出現M次的情況。
{M,N}將匹配其左邊的正則表達式出現M到N次的情況。
{M,}將匹配其左邊的正則表達式出現M次或更多次的情況。
正則表達式 | 匹配的字符串 |
dog? | dog,do |
dog* | do,dog,dogg,doggg,....do任意個g |
dog+ | dog,dogg,doggg,....dog任意個g |
dog{5} | doggggg |
dog{2,3} | dogg,doggg |
6.表示字符集的特殊字符 (\w)(\d) (\s)
\w 匹配任何字母數字下划線字符
\d 匹配任何十進制數字
\s 匹配任意空格字符
正則表達式 | 匹配的字符串 |
\w+ | 一串由字母數字組成的字符串 |
\d{3}-\d{3}-d{4} | 美國電話號碼形式,如800-555-1212 |
\w+@\w+\.com | xxx@yyy.com形式的電子郵件地址 |
\s | 與[\n\r\t\v\f]相同,與\S相反 |