Python的re模組常用方法小練

2021-10-06 03:45:12 字數 3387 閱讀 6942

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 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規...