Python Re模組

發表於2017-10-23

re模組下的函式

compile(pattern):建立模式物件

search(pattern,string):在字串中尋找模式

match(pattern,string):在字串開始處匹配模式

等價於

上面的函式返回都可以在if條件語句中進行判斷:

split(pattern,string):根據模式分割字串,返回列表

findall(pattern,string):列表形式返回匹配項

sub(pat,repl,string) :用repl替換 pat匹配項

(留的是中間的,因為中間在中心)

escape(string) :對字串裡面的特殊字串進行轉義

上面的函式中,只有match、search有group方法,其他的函式沒有。

函式的方法

group:獲取子模式(組)的匹配項

start:給定組匹配項的開始位置

end:給定組匹配項的結束位置

span: 給定組匹配項的開始結束位置

正規表示式

元字元

“.” :萬用字元,除換行符外的任意的1個字元

“\” : 轉義符

“[…]” : 字符集合,匹配裡面的任意一個元素

“\d” : 數字

“\D” : 非數字

“\s” :空白字元 、 \t、\r、\n、空格

“S” :非空白字元

“\w” :單個的 數字和字母,[A-Za-z0-9]

“\W”:非單詞字元,除數字和字母外

數量詞

“*” :0次或多次

( 乘0會變成0

“+” :1次或多次

( 加0不會變成0

“?” :0次或1次,match,search 不會出現none,會出現’ ‘ (因為0次也是符合的

0次或1次不是指[xxx]這個集合,而是其中的任何的一個字元

“數量詞?” :非貪婪模式:只匹配最少的(儘可能少);預設貪婪模式:匹配最多的(儘可能多)

“{m}” :匹配字串出現m次

“{m,n}” :匹配字串出現m到n次

.group() #匹配第一次出現

邊界

“^” :匹配字串開頭或行頭

“$” :匹配字串結尾或則行尾

“\A”:匹配字串開頭

“\Z”:匹配字串結尾

分組

(…):分組匹配,從左到右,每遇到一個 ( 編號+1,分組後面可加數量詞

<number>:引用編號為<number>的分組匹配到的字串

“(?P<name>…)” :在模式裡面用()來表示分組(命名分組),適用於提取目標字串中的某一些部位。

“(?P=name)”:引用別名為<name>的分組匹配到的串

“<number>” :引用分組編號匹配:

特殊構造

(?:…) (…)不分組版本,用於使用 | 或者後接數量詞
(?iLmsux) iLmsux的每個字元代表一個匹配模式,只能用在正規表示式的開頭,可選多個
(?#…) #號後的內容將作為註釋
(?=…) 之後的字串內容需要匹配表示式才能成功匹配
(?!…) 之後的字串不匹配表示式才能成功
(?(?(?(id/name) yes |no) 如果編號為id/名字為name的組匹配到字串,則需要匹配yes,否則匹配no,no可以省略

“(?:…)” :()裡面有?:表示該()不是分組

“(?=…)”:匹配…表示式,返回。對後進行匹配,總是對後面進行匹配

“(?!…)” 不匹配…表示式,返回。對後進行匹配

“(?<=…)”:匹配…表示式,返回。對前進行匹配,總是對前面進行匹配

“(?<!…)”:不匹配…表示式,返回。對前進行匹配,總是對前面進行匹配

“(?(id/name) yes |no)”: 組是否匹配,匹配返回

“(?iLmsux)”:這裡就介紹下i引數:大小寫區分匹配

http://www.cnblogs.com/huxi/a…

相關文章