findall(pattern, string, flags=0) 作為re模組的三⼤搜尋函式之⼀,findall()和match()、search()的不同之處在 於,前兩者都是單值匹配,找到⼀個就忽略後⾯,直接返回不再查詢了。⽽ findall是全⽂查詢,它的返回值是⼀個匹配到的字串的列表。這個列表沒有 group()⽅法,沒有start、end、span,更不是⼀個匹配物件,僅僅是個列表! 如果⼀項都沒有匹配到那麼返回⼀個空列表
str
='對方對方的 1212 '
out = re.findall(r'(.*?)'
,str
)print
(out)
#[''] #['', '']
print
(re.findall(r'.*?',
'2121212
12343gee')
)#['2121212
', '12343gee
']
split(pattern, string, maxsplit=0, flags=0) re模組的split()⽅法和字串的split()⽅法很相似,都是利⽤特定的字元去分割 字串。但是re模組的split()可以使⽤正規表示式,因此更靈活,更強⼤
split有個引數maxsplit,⽤於指定分割的次數
a = re.split(
'123'
,'==123!! abc123. 123. 123abc. 1231'
)print
(a)#['==', '!! abc', '. ', '. ', 'abc. ', '']
sub(pattern, repl, string, count=0, flags=0) sub()⽅法類似字串的replace()⽅法,⽤指定的內容替換匹配到的字元,可以 指定替換次數
#需求: 剔除連續重複---將包含連續重複的字元組成的字串,進行提重處理
str=
'##### gggooo ffforrr iiittt!!!!! jjjussst dooo iiit!"追追追求夢夢夢夢想,,做做做就對對對了!'
str= re.sub(r"(.)\1+"
,r'\1'
,str
)print
(str
)## go for it! just do it!"追求夢想,做就對了!
# \1表示使用編號為1的分組
# 將口吃的話反應為正常
str=
'###### 開開開開玩玩玩笑,這這這麼貴的酒酒酒誰誰喝的起!!!'
str= re.sub(r"(.)\1+"
,r'\1'
,str
)print
(str
)# # 開玩笑,這麼貴的酒誰喝的起!
#替換字串中的字元
str=
'你愁啥,瞅你咋地,再瞅一44,44就44'
str= re.sub(r'4'
,r'試'
,str
)print
(str
)#你愁啥,瞅你咋地,再瞅一試試,試試就試試
#替換html的空格
str=
't-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0'
str= re.sub(r'\xa0'
,r' '
,str
)# t-shirt 短袖圓領衫,體恤衫
print
(str
)#t-shirt 短袖圓領衫,體恤衫
#替換字串中的子字串
str=
'做人要謙虛abcdef多聽聽他人的意見abcdef然後認真記下來對你有意見的都是誰。'
str= re.sub(r'abcdef'
,r', '
,str
)print
(str
)#做人要謙虛, 多聽聽他人的意見, 然後認真記下來對你有意見的都是誰。
#替換字串中特定的字元
#例項:替換字串中的空格,\t,\r, \n
str=
'人才 和天才 只差乙個"二"\r\r\r\t。故,人才很\n精,而天\t才總是有點二。'
str= re.sub(r'[\r\n\t ]'
,r''
,str
)#str = re.sub(r'\s',r'',str)
print
(str
)#人才和天才只差乙個"二"。故,人才很精,而天才總是有點二。
python的re模組有⼀個分組功能。所謂的分組就是去已經匹配到的內容再篩選出需要的內容,相當於⼆次過濾。實現分組靠圓括號(),⽽獲取分組的內容靠的 是group()、groups()。re模組⾥的積個重要⽅法在分組上,有不同的表現形式,需要區別對待。
str
='剪頭髮 81元,洗頭髮 12元,染頭髮 123元'
r = re.search(
'.+(\d+元).+(\d+元).+(\d+元)'
,str
)print
(r.groups())
#('1元', '2元', '3元')
r1 = re.search(
'\d*(\d+元)\d*(\d+元)\d*(\d+元)'
,str
)print
(r1.group())
#剪頭髮 81元,洗頭髮 12元,染頭髮 123元
print
(r1.group(0)
)#剪頭髮 81元,洗頭髮 12元,染頭髮 123元
print
(r1.group(1)
)#81元
print
(r1.group(2)
)#12元
print
(r1.group(3)
)#123元
print
(r1.groups())
#'81元', '12元', '123元')
r2 = re.search(
'\d+(\d+元)\d+(\d+元)\d+(\d+元)'
,str
)print
(r2.groups())
#('81元', '12元', '123元')
Python的re模組常用方法
search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返回none,group會報錯 match 相當於search的正規表示式中加了乙個 spilt 返回列表,按照正則規則切割,預設匹配到的內容會被切掉 sub subn 替換,按照正則規則去尋找要被替換掉的內容,subn返...
re模組常用方法
match string pos endpos string是待匹配的字串pos和endpos可選引數,指定字串的起始和終點位置,預設值分別是0和len 字串長度 match 方法 從起始位置開始查詢,一次匹配 re.match pattern,string,flags 0 result re.ma...
Python常用模組 re
python內部的re 傳聞中的正則模組,是無數初學者心中的噩夢,幾乎到了談正則色變的地步。1.正則是幹什麼的 正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規...