天天看點

python 教程 第十六章、 正規表達式

第十六章、 正規表達式

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分割字元串

貪婪比對