python之正則表達式

  • 2019 年 10 月 8 日
  • 筆記

正則表達式:

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。

在python中,對數據的處理很是頻繁的,可以取字符串的一部分,或者對爬蟲來說,也要對於一些數據處理,對獲取到的html代碼進行處理,提取需要的數據,url,照片的地址等等。

re.match函數

re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。

函數語法:

re.match(pattern, string, flags=0)

pattern 要匹配的正則表達式

string 要匹配的字符串

flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。

re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;

span():

可以用span()函數獲取匹配到的字符串的位置:

group(num):

我們可以用group(num)來提取匹配到的字符串,在菜鳥教程中還有一個groups(),但是我提取不出來字符串,可能是我的用法用錯了

search():

re.search 掃描整個字符串並返回第一個成功的匹配。re.search匹配整個字符串,直到找到一個匹配。

檢索和替換:

Python 中re模塊提供一種方法,re.sub,能夠將匹配項替換成別的字符串。

語法:

re.sub(pattern, repl, string, count=0, flags=0)

pattern : 正則中的模式字符串。

repl : 替換的字符串,也可為一個函數。

string : 要被查找替換的原始字符串。

count : 模式匹配後替換的最大次數,默認 0 表示替換所有的匹配。

flags : 編譯時用的匹配模式,數字形式。

其中,

repl 參數可以是一個有返回值的函數,這樣返回值便是替換的結果

將要匹配的字符串內的數字乘2。

compile 函數

compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

語法格式為:

re.compile(pattern[, flags])

pattern : 一個字符串形式的正則表達式

flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數為:

re.I 忽略大小寫

re.L 表示特殊字符集 w, W, b, B, s, S 依賴於當前環境

re.M 多行模式

re.S 即為' . '並且包括換行符在內的任意字符(' . '不包括換行符)

re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依賴於 Unicode 字符屬性數據庫

re.X 為了增加可讀性,忽略空格和' # '後面的注釋

一般默認就不寫了。

match(字符串,第幾位,到第幾位),如果沒寫則默認從第一位開始算

search的話就不用,從頭匹配,匹配到了就返回:


findall

在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 ,而findall 則是匹配所有的。

findall(string[, pos[, endpos]])

string 待匹配的字符串。

pos 可選參數,指定字符串的起始位置,默認為 0。

endpos 可選參數,指定字符串的結束位置,默認為字符串的長度。