Python中re模塊常用方法總結(jié)分析
re.findall()
在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果沒(méi)有找到匹配的,則返回空列表。
語(yǔ)法格式:
re.findall(pattern, string, flags=0)
參數(shù):
pattern:匹配字符串的正則。
string :待匹配的字符串。
示例:
需求:查找字符串中的所有數(shù)字
result = re.findall(r'\d+','1python2hello3') print(result)
結(jié)果
['1', '2', '3']
result = re.findall(r'p%','helloP%ython') print(result)
結(jié)果
[] #因?yàn)橐ヅ涞淖址甈% 和正則p%不匹配,所以返回空
result = re.findall(r'p%','helloP%ython',re.I) print(result)
結(jié)果
[P%]
re.sub()
語(yǔ)法:
re.sub(pattern, repl, string, count=0, flags=0)
參數(shù):
pattern : 正則中的模式字符串。
repl : 替換的字符串,也可為一個(gè)函數(shù)。
string : 要被查找替換的原始字符串。
count : 模式匹配后替換的最大次數(shù),默認(rèn) 0 表示替換所有的匹配。
result = re.sub(r'python','world','hellopython') print(result)
結(jié)果
helloworld
repl 參數(shù)是一個(gè)函數(shù)
#需求:將匹配到結(jié)果中小于4的替換成8,大于4的替換成9
import re
def modify(value):
matched = value.group()
if int(matched) <= 4:
return '8'
else:
return '9'
str = 'ab12cd34ef567'
result = re.sub('\d', modify, str)
print(result )
結(jié)果
ab88cd88ef999
使用場(chǎng)景:可以對(duì)匹配成功要替換的部分做操作
re.compile
當(dāng)我們?cè)赑ython中使用正則表達(dá)式時(shí),re模塊內(nèi)部:
- 1)編譯正則表達(dá)式,如果正則表達(dá)式的字符串本身不合法,會(huì)報(bào)錯(cuò);
- 2)用編譯后的正則表達(dá)式去匹配字符串。
那么如果一個(gè)正則表達(dá)式要重復(fù)使用幾千次,出于效率的考慮,我們是不是應(yīng)該先把這個(gè)正則先預(yù)編譯好,接下來(lái)重復(fù)使用時(shí)就不再需要編譯這個(gè)步驟了,直接匹配,提高我們的效率
compile 函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式( Pattern )對(duì)象,供 match() 和 search() 這兩個(gè)函數(shù)使用。
語(yǔ)法格式為:
re.compile(pattern[, flags])
參數(shù):
pattern : 一個(gè)字符串形式的正則表達(dá)式
flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,
str = 'ab12cd34ef567'
info = re.compile(r'([a-z]{2})(\d{2})')
result = info.match(str).group()
result1 = info.match(str).groups()
print(result)
print(result1)
結(jié)果
ab12
('ab', '12')
re.match
re.match 嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match()就返回none。
語(yǔ)法
re.match(pattern, string, flags=0)
參數(shù):
pattern :匹配的正則表達(dá)式
string:要匹配的字符串。
flags : 標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'ab12cd34ef567'
info = re.compile(r'([a-z]{2})(\d{2})')
result = info.match(str).group()
result1 = info.match(str).groups()
print(result)
print(result1)
結(jié)果
ab12
('ab', '12')
str1 = '0b12cd34ef567' result1 = info.match(str1).group() print(result1)
結(jié)果: 會(huì)報(bào)錯(cuò)
AttributeError: 'NoneType' object has no attribute 'group'
re.search
re.search 掃描整個(gè)字符串并返回第一個(gè)成功的匹配。
參數(shù):
pattern :匹配的正則表達(dá)式
string:要匹配的字符串。
flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'ab12cd34ef567'
info = re.compile(r'([0-9]{2})')
result = info.search(str).group()
print(result)
結(jié)果
12
re.match與re.search的區(qū)別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;
re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。
re.split
split 方法按照能夠匹配的子串將字符串分割后返回列表
語(yǔ)法
re.split(pattern, string[, maxsplit=0, flags=0])
參數(shù):
pattern: 匹配的正則表達(dá)式
string:要匹配的字符串。
flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'abc def g hi'
result = re.split('\W+',str)
print(result)
結(jié)果
['abc', 'def', 'g', 'hi']
以上就是Python中re模塊常用方法總結(jié)分析的詳細(xì)內(nèi)容,更多關(guān)于Python中re模塊常用方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)FTP弱口令掃描器的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)FTP弱口令掃描器的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
實(shí)例講解Python的函數(shù)閉包使用中應(yīng)注意的問(wèn)題
這里我們來(lái)以實(shí)例講解Python的函數(shù)閉包使用中應(yīng)注意的問(wèn)題,主要針對(duì)閉包后新生成的變量來(lái)不及初始化而導(dǎo)致找不到變量的錯(cuò)誤出現(xiàn),需要的朋友可以參考下2016-06-06
python遞歸法實(shí)現(xiàn)簡(jiǎn)易連連看小游戲
這篇文章主要為大家詳細(xì)介紹了python遞歸法實(shí)現(xiàn)簡(jiǎn)易連連看小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python監(jiān)測(cè)屏幕界面內(nèi)容變化并發(fā)送通知方法詳解
這篇文章主要為大家介紹了Python監(jiān)測(cè)屏幕界面內(nèi)容變化并發(fā)送通知,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Python解析網(wǎng)頁(yè)源代碼中的115網(wǎng)盤鏈接實(shí)例
這篇文章主要介紹了Python解析網(wǎng)頁(yè)源代碼中的115網(wǎng)盤鏈接實(shí)例,主要采用了正則表達(dá)式re模塊來(lái)實(shí)現(xiàn)該功能,需要的朋友可以參考下2014-09-09

