1. 程式人生 > >python正則表示式學習筆記

python正則表示式學習筆記

正則表示式

學習資源:https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md

正則表達例子:

|    A|B  匹配 A或者B

.    A.A  匹配  A.A 匹配任何字元 除了\n除外

^   ^Demo  匹配字串起始部分

$   abc$   匹配字串終止部分

*    [A-Za-z0-9]* 匹配零次多次前面出現的表示式

+   [a-z]+\.com 匹配1次或多次前面出現的表示式

?  abc?  匹配0次或者1次前面出現的表示式

{N}  [0-9]{3} 匹配N次前面出現的表示式  {指定引數} {,逗號分割引數}

[...]   [abc] 匹配來自字符集的任意單一字元

[..x-y..]  [a-z]匹配下x-y範圍中的任意單一字元

[^...]    [^abc],[^a-z]不匹配此字符集中出現的任何一個字元,包括某一範圍的字元

(*|+|?{})?    .*?[a-z] 用於匹配上面頻繁出現/重複出現符號的非貪婪版本

(...)   ([0-9]{3})?,f(00|u)bar 匹配封閉的正則表示式,然後另存為子組

特殊字元用法

\d    data\d+.txt 匹配任何十進位制[0-9]  \D與\d相反,不匹配任何非數值型的數字

\w   [A-Za-z]\w+  匹配任何字母數字字元    \W相反

\s    of\sthe 匹配任何空格字元, \S相反

\b    \bThe\b匹配任何單詞邊界 , \B相反

\N   匹配已儲存的子組N  

\c    \.,\\,\* 逐字匹配任何特殊字元

\A(\Z)  匹配字串的起始

擴充套件表示法

(?iLmsux)   (?x), (? im) 在正則表示式中嵌入一個或多個特殊標記引數

(?:...)  (?:\w+\.)*  表示一個匹配不用儲存的分組

(?P<name>...) 像一個僅有name識別符號而不是數字ID標識的正則分組匹配

(?P=name)   在同一個字元中匹配由(?P<name>)分組的之前文字

(?#...)   表示註釋

(?=...)   匹配條件是如果...出現在之後的位置,而不使用輸入字元;稱作向前視斷言

(?!..)     匹配條件是如果...不出現在之後的位置

(?<=...)  匹配條件是如果,出現在之前的位置

(?<!...)   匹配條件是如果...不出現在之前的位置

(?(id/name)Y/N)  如果分組所提供的id或者name存在,就返回正則表示式的條件匹配Y,如果不存在,就返回N ,N可選項