python:re模塊
主要是學習re模塊的使用,正則表達式的學習...我都看了,就是運用少,所以沒記住什麽,用到的時候,還得翻我手工記錄的正則筆記.....如果是爬取網頁,可以用bs4模塊,這個更方便,只是正則很強大(~ ̄▽ ̄)~
看的下面這個文章做得筆記
https://mp.weixin.qq.com/s?__biz=MzI5MDQ2NjExOQ==&mid=2247483970&idx=1&sn=ee3c82889fcec5779a0f6441f0a2f70a&chksm=ec1e326adb69bb7ccd9a972f50456bd7bc79f68123c165f1c9e7c84a0a425cfdbf5d021d28d2&mpshare=1&scene=23&srcid=1223rwdT94LSYY9f2y7apOb7#rd
re.compile(pattern[, flag])
功能:生成一個正則表達式對象
pattern為要編譯的正則表達式,flag為下圖中的標誌位。
match(string[, pos[, endpos]])
參數解釋:string為匹配用的原始字符串,pos為文本中正則表達式開始搜索的索引,endpos文本中正則表達式結束搜索的索引
使用match函數成功後會返回一個對象,該對象包含一下功能:
group([group1, …]) 方法用於獲得一個或多個分組匹配的字符串,當要獲得整個匹配的子串時,可直接使用 group() 或 group(0);
start([group]) 方法用於獲取分組匹配的子串在整個字符串中的起始位置(子串第一個字符的索引),參數默認值為 0;
end([group]) 方法用於獲取分組匹配的子串在整個字符串中的結束位置(子串最後一個字符的索引+1),參數默認值為 0;
span([group]) 方法返回 (start(group), end(group))。
>>> str = "qwe123asd" >>> import re >>> pattern = re.compile(‘[a-z]+‘) >>> obj = pattern.match(str)
search(string[, pos[, endpos]])
為一次匹配,如果匹配成功返回一個
findall(string[, pos[, endpos]])
參數解釋:string為匹配用的原始字符串,pos為文本中正則表達式開始搜索的索引,endpos文本中正則表達式結束搜索的索引
findall 以列表形式返回全部能匹配的子串,如果沒有匹配,則返回一個空列表。
finditer(string[, pos[, endpos]])
finditer 方法的行為跟 findall 的行為類似,也是搜索整個字符串,獲得所有匹配的結果。但它返回的是一個match的對象。
split(string[, maxsplit])
maxsplit 用於指定最大分割次數,不指定將全部分割。(python有個內置方法也是split)
sub(repl, string[, count])
repl可以是字符串也可以是函數,string為匹配用的原始字符串, count 用於指定最多替換次數,不指定時全部替換。
如果 repl 是字符串,則會使用 repl 去替換字符串每一個匹配的子串,並返回替換後的字符串,另外,repl 還可以使用 id 的形式來引用分組,但不能使用編號 0;
如果 repl 是函數,這個方法應當只接受一個參數(Match 對象),並返回一個字符串用於替換(返回的字符串中不能再引用分組)。
sub函數返回替換後的字符串。
主要是repl為函數需要註意
subn(repl, string[, count])
參數與sub的參數一致
subn返回一個元組,第一個元素是使用sub方法的結果,一個是替換的次數
在不使用compile的時候,只需要將函數前面加re.以及第一個參數為正則表達式即可,例如:re.search("\d", "myh0st")
python:re模塊