1. 程式人生 > >Python正則表示式:re模組

Python正則表示式:re模組

正則表示式:
使用單個字串來描述、匹配一系列匹配某個句法規則的字串正則表.通常被用來檢索、替換那些符合某個模式(規則)的文字.python自1.5起提供了re模組,它提供了perl風格的正則表示式.
re模組簡介

re.match函式

功能
	嘗試從字串的起始位置開始匹配一個模式,如果不是起始位置匹配成功的話,match()就返回None
原型
    re.match(pattern,string,flags= 0)

re.search函式

功能
	掃描整個字串並返回第一個成功的匹配
原型
	re.search(pattern,string,flags=0)	

re.findall函式

功能
	掃描整個字串,並返回結果列表
原型
	re.findall(pattern,string,flags=0)
函式引數
	pettern  匹配的正則表示式
	string     要匹配的字串
	flags      標誌位,用於控制正則表示式的匹配方式 ,如是否匹配大小寫,多行匹配等
		re.I	使匹配對大小寫不敏感
		re.L	做本地化識別(locale-aware)匹配
		re.M	多行匹配,影響 ^ 和 $
		re.S	使 . 匹配包括換行在內的所有字元
		re.U	根據Unicode字符集解析字元。這個標誌影響 \w, \W, \b, \B.
		re.X	該標誌通過給予你更靈活的格式以便你將正則表示式寫得更易於理解。

正則表示式元字元

#匹配單個字元與數字
. 	匹配任意字元,除了換行符,當re.DOTALL標記被指定時,則可以匹配包括換行符的任意字元。
[0123456789]
	[]是字元集合,表示匹配方括號中所包含的任意字元
[awen]
	匹配 'a' , 'w', 'e','n'中的任意字元
[0-9]
	匹配任何數字.類似於[0123456789]
[a-z]
	匹配任何小寫字母
[A-Z]
	匹配任何大寫字母
[a-zA-Z0-9]
	匹配任何字母及數字
[^abcd]
	除了abcd字母以外的所有字元,[ ] 中的 ^ (脫字元)表示非,匹配不在[]中的字元
[^7-9]
	匹配除了數字以外的字元
\d
	匹配數字,  效果同 [0-9]
\D
	匹配非數字,效果同 [^0-9]
\w
	匹配數字,字母,下滑錢 ,效果同[0-9a-zA-Z_]
\W
	匹配非數字,字母,下滑錢 ,效果同[^0-9a-zA-Z_]
\s
	匹配任何空白字元,包括空格,換頁符,換行符,回車符,製表符等等,  等價於[ \f\n\r\t]
\S
	匹配非空字元,等價於 [^ \f\n\r\t]
#描字元與邊界字元
^
	行首匹配, 和 在 [ ]字元集合最中的^ 不是一個意思
$
	行尾匹配
\A
	匹配字串的開始,它和 "^"的區別是, "\A" 只匹配整個字串的開頭,即使在 " M"模式下, 它也不會匹配其他行的行首
\Z
	匹配字串的結束,它和 "$"的區別是, "\Z" 只匹配整個字串的結尾,即使在 " M"模式下, 它也不會匹配其他行的行尾
\b
	匹配一個單詞邊界,也就是指單詞和空格間的位置, 
例如, "er\b" 可以匹配"nerver"中的"er' , 不能匹配"verb"中的er
\B
	匹配非單詞邊界,
例如, "er\B" 不能匹配"nerver"中的"er' , 可以匹配"verb"中的er
#匹配多個字元
	說明:以下的x , y ,z均為假設的普通字元,不是正則表示式元字元
	(xyz)
		匹配括號中的xyz(作為一組整體去匹配)
	x?
		匹配0個或1個x,非貪婪方式
	x*
		匹配0個或者任意多個x,延伸:  .*表示匹配0個或者任意多個任意字元(除換行符以外)
	x+
		匹配至少一個x
	x{n}
		匹配確定的n個x,(n是一個非負整數) 注意: 是連續的
	x{n,}
		匹配至少n個x,(n是一個非負整數) 注意: 是連續的
	x{n,m}
		匹配至少n個x, 最多m個x(n,m是一個非負整數,n <= m) 注意: 是連續的
	x|y	
		|表示或, 這裡指  x 或y
?	匹配前面的子表示式零次或一次,或指明一個非貪婪限定符。
    當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的
    非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。
    例如,對於字串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。

{}	限定符表示式。
    {n}	n 是一個非負整數。匹配確定的 n 次。
    {n,}	n 是一個非負整數。至少匹配n 次。
    {n,m}	m 和 n 均為非負整數,最少匹配 n 次且最多匹配 m 次。
\	將下一個字元標記為或特殊字元\n,\\
|	指明兩項之間的一個選擇,'z|food' 能匹配 "z" 或 "food"
#正則表示式運算優先順序
\	                        轉義符
(), (?:), (?=), []	        圓括號和方括號
*, +, ?, {n}, {n,}, {n,m}	限定符
^, $, \任何元字元、任何字元	定位點和序列(即:位置和順序)
|	             替換,"或"操作