1. 程式人生 > >re模塊和分組

re模塊和分組

find split切割 n) arch courier 一個 int one com

1. findall search match (查找,匹配)

findall方法括號內參數 正則,字符串, 返回值是一個列表,匹配不到返回[] 空列表

如 ===> ret = re.findall(‘\s+‘,‘kjewhfqho254qfewgf‘) print(ret)

search 方法括號內參數 正則,字符串, 匹配到返回值是對象空間,,沒有匹配到則返回None, 也經常用到if 語句中,如if ret1:print(ret1.group()) # 返回的對象通過group來獲 取匹配到的第一個結果

如 ===> ret1 = re.search(‘\d‘,‘dg;ijwpggg.weqge‘) print(ret1)

match與search方法相類似,區別在於相當於在正則的開頭加了了^ ,用來判斷以什麽開始的,不建議用

如 ===> ret2 = re.match(‘\d+‘,‘afw321653afdwqef‘) print(ret2.group())

2. sub subn (替換) split (切割)

sub方法,括號內 正則,替換的新值,字符串,替換次數(多少不會報錯),返回值是字符串類型

subn 跟sub一樣,除了會返回替換後的結果,還會返回替換的次數,是元組類型

如 ===> ret3 = re.sub(‘\d+‘,‘H‘,‘53463434dweqf53we1gfw5f‘) print(ret3)

split切割方法括號內 正則,字符串 返回值是個列表, 註意: 處理數據時,如果被切割的也顯示出來,那就給正則那裏加個括號(),這樣就能顯示出來

如 ===> ret4 = re.split(‘\d+‘,‘wegwerwg2564gfwe3g156‘) print(ret4)

3 ret5 = re.compile(‘-0\.\d+|-[1-9]+(\.\d+)?‘) # 多次用到這個正則表達式時,那麽就用compile 命令節省時間效率

res = ret5.search(‘fgqgioh521-4551312qgwfgqwfge‘)# 只用傳字符串就行

print(res.group())

ret0 = re.finditer(‘\d+‘,‘kfhqhegf564646.weg545-we5g4‘) #註意這個命令會幫我們拿到符合正則的字符串的叠代器,節省空間

for r in ret0:

print(r.group())

4, findall 會優先顯示分組中的內容,要想取得分組優先, (?:正則表達式) 正則前面加?:

split 遇到分組 會保留分組內被切掉的內容

search 如果search中有分組的話,通過group(n)就能夠拿到group中的匹配的內容

5, 分組的命名

啟名字

(?P<name>正則表達式) 表示給分組起名字

通過索引使用分組

(?P=name)表示使用這個分組,這裏匹配到的內容應該和分組中的內容完全相同

re模塊和分組