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 可選參數,指定字符串的結束位置,默認為字符串的長度。
