1. 程式人生 > >python中常見的幾種正則表示式的使用(re.split、re.sub、re.match與re.search)

python中常見的幾種正則表示式的使用(re.split、re.sub、re.match與re.search)

一、正則表示式之分割

字串的分割是python最常用的操作之一,一般使用split函式,例如:

s = "今天/天氣/真好"
print(s.split('/'))

輸出為:[‘今天’,‘天氣’,‘真好’]。但split函式只能實現單個字元的分隔,但對於多個分隔符而言,實現起來非常麻煩。
python的正則表示式提供十分強大的多分隔符功能,具體實現如下:

import re
s = "jiang,nian,xin、啦/我,你"      
split_str = ",|,|、|/" #'|'表示或
s = re.split(split_str, s)
print(s)

輸出為:[‘jiang’, ‘nian’, ‘xin’, ‘啦’, ‘我’, ‘你’]。正則表示式夠厲害吧。

二、正則表示式之替換
在字串中,常用的替換函式為replace,但replace與正則表示式中的sub函式相比,還是有一定差距的。replace的功能sub能夠實現,而且還能夠實現其它功能。sub的實現如下:

import re 
addr="3號9樓8樓2單元302室"        
addr = re.sub('[0-9]+(樓|單元)','',addr)  #引數第一項模板,第二項為替換的值
print(addr)

輸出為:‘3號302室’ 。

三、正則表示式之匹配

匹配常用的函式為match,具體功能:匹配string開頭,成功返回Match object, 失敗返回None,只匹配一個。

import re
addr="3號9樓8樓2單元302室" 
print(re.match('[0-9]+(樓|單元)',addr))
print(re.match('[0-9]+號[0-9]+(樓|單元)',addr))

#輸出為:None; <_sre.SRE_Match object; span=(0, 4), match=‘3號9樓’>

四、正則表示式之查詢
search:在string中進行搜尋,成功返回Match object, 失敗返回None,只匹配一個。

import re
addr="3號9樓8樓2單元302室" 
s = re.search('[0-9]+號[0-9]+(樓|單元)',addr) #使用基本和match同
print(s.span())

#輸出為:(0,4)