第十六章、 正規表達式
1) 比對多個表達式
記号 re1|re2
說明 比對正規表達式re1或re2
舉例 foo|bar 比對 foo, bar
記号 {N}
說明 比對前面出現的正規表達式N
舉例 [0-9]{3} 比對
2) 比對單個/多個/範圍内字元
記号 .
說明 比對任何字元(換行符除外)
舉例 b.b 比對 b和b中間有一個任意字元bab, bcb, bbb
舉例 .. (比對任何兩個字元) 比對 xx, ab
記号 […]
說明 比對字元組裡面出現的任意一個字元
舉例 b[aeiou]t 比對3字元串 bat,bit,but,bet
舉例 [ab][23][xy] 比對3字元串 a2x,a3y,b2x,b3x
記号 [..x-y..]
說明 比對從字元x到y中的任意一個字元
舉例 [0-9] 比對任意一個十進制數字,
[A-Za-z] 比對任意一個字母
3) 比對開頭結尾邊界
記号 ^
說明 比對字元串的開始
舉例 ^Dear 比對 任何以Dear開始的字元串
記号 $
說明 比對字元串的結尾
舉例 /bin/*sh$ 比對 任何以/bin/*sh結束的字元串
4) 否定範圍
記号 [^…]
說明 不比對此字元集中出現的任何一個字元,包括某一範圍的字元
舉例 [^aeiou]比對
[^A-Za-z0-9] 比對
5) 多次出現/重複比對
記号 *
說明 比對前面出現的正規表達式零次或多次
舉例 [A-Za-z0-9]* 比對 a
記号 +
說明 比對前面出現的正規表達式一次或多次
舉例 [a-z]+\.com 比對 qq.com, baidu.com
記号 ?
說明 比對前面出現的正規表達式零次或一次
舉例 goo? 比對 go,goo
0?[1-9]比對1到9的任意數字,前面可能有個0
記号 {M,N}
說明 比對重複出現M次到N次的正規表達式
舉例 [0-9]{5,10} 比對5到9位數字,如QQ号碼
[KQRBNP][a-h][1-8]-[a-h][1-8]國際象棋合法移動
記号 (*|+|?{})?
說明 用于上面出現的任何”非貪婪”.版本重複比對次數符号
舉例 .*?[a-z] 比對
6) 特殊字元
記号 \d
說明 比對任何數字,和[0-9]一樣(\D為\d的反義,任何非數字元)
舉例 data\d+.txt 比對data後面一個或多個數字.txt
\d{3}-\d(3)-d{4} 比對美國電話号碼,如800-555-1212
記号 \w
說明 比對任何數字字母字元,和[A-Za-z0-9_]相同,(\W為\w的反義)
舉例 [A-Za-z_]\w+ 比對任意字母再加任意一個字母或數字
\w+@\w+\.com 比對一個電子郵件,如[email protected]
記号 \s
說明 比對任何空白符,和[\n\t\r\v\f]相同(\S是\s的反義)
舉例 of\sthe 比對 of the
記号 \b
說明 比對單詞邊界(\B是\b的反義)
舉例 \bthe\b 僅比對單詞the
/bthe 任何以the開始的字元串
記号 \nn
說明 比對已儲存的子組(參考(…))
舉例 price:\16 比對
記号 \c
說明 逐一比對特殊字元c(即取消特殊含義,按字面比對)
舉例 \.,\\,\* 比對
記号 \A(\Z)
說明 比對字元串的起始(結束)
舉例 \ADear 以Dear開始的字元串
7) 用圓括号組建組
記号 (…)
說明 比對封閉括号中正規表達式(RE),并儲存為子組
舉例 ([0-9]{3})?, f(oo|u)bar 比對
\d+(\.\d*)? 比對浮點型數字,任意十進制數字加一個可選小數部分(包括一個小數點,零個或多個十進制數字),如0.004,75等.
8) 其它
記号 literal
說明 比對字元串的值
舉例 foo 比對 foo
findall找個每個比對的部分
sub搜尋替換
subn搜尋替換并傳回次數
split分割字元串
貪婪比對