1. 程式人生 > >python:re模塊

python:re模塊

所有 第一個字符 ear family 最大 次數 指定 返回 內置

主要是學習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]])

為一次匹配,如果匹配成功返回一個

match對象,如果不成功則返回None

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模塊