Python 正則表達(dá)式
re 模塊使 Python 語(yǔ)言擁有全部的正則表達(dá)式功能,re模塊常用方法:
re.match函數(shù)
re.match從字符串的起始位置匹配喂分,如果起始位置匹配不成功厌均,則match()就返回none汗贫。司蔬,如果匹配成功沐序,則可通過group(num) 或 groups()獲取匹配結(jié)果盏袄。
函數(shù)語(yǔ)法
re.match(pattern,string,flags=0)
函數(shù)參數(shù)
pattern?: 正則表達(dá)式
string?: 字符串。
flags?: 標(biāo)志位薄啥,用于控制正則表達(dá)式的匹配方式辕羽,如:是否區(qū)分大小寫等等
flags模式
re.I 使匹配對(duì)大小寫不敏感
re.L 做本地化識(shí)別(locale-aware)匹配
re.M 多行匹配,影響 ^ 和 $re.S使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符垄惧。這個(gè)標(biāo)志影響 w, W, , B.
re.X 該標(biāo)志通過給予你更靈活的格式以便你將正則表達(dá)式寫得更易于理解刁愿。
import re
re_str='The re module gives the Python language full regular expression capabilities.'
match_str=re.match('The r(.+?)', re_str)
# group() 匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào)到逊,在這種情況下它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組铣口。
print(match_str.group())
輸出 The re
print(match_str.group(1))
輸出 e
# 返回一個(gè)包含所有小組字符串的元組滤钱,從 1 到 所含的小組號(hào)。
print(match_str.groups())
輸出 ('e',)
# 其實(shí)位置匹配不成功則返回None
match_str=re.match('module',re_str)
print(match_str)
輸出 None
# 設(shè)置為對(duì)大小寫不敏感,re.I
match_str=re.match('the r(.+?)',re_str,re.I)
print(match_str.group())
輸出 The re
re.search方法
re.search 對(duì)整個(gè)字符串進(jìn)行匹配并返回第一個(gè)成功的匹配字符串脑题,否則返回None件缸。? ? ? ? ? ? ? 我剛整理了一套2018最新的0基礎(chǔ)入門和進(jìn)階教程,無私分享叔遂,加Python學(xué)習(xí)q u n?:227-435-450即可獲取他炊,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖
函數(shù)語(yǔ)法
re.search(pattern,string,flags=0)
函數(shù)參數(shù)
pattern?: 正則表達(dá)式
string?: 字符串
flags?: 標(biāo)志位
search_str=re.search('r(.+?)', re_str)
print(search_str.group())
輸出 re
re.match與re.search的區(qū)別
re.match只匹配字符串的開始已艰,如果字符串開始不符合正則表達(dá)式痊末,則匹配失敗,而re.search匹配整個(gè)字符串哩掺,直到找到一個(gè)匹配凿叠,并返回第一個(gè)被匹配到的字符串。
findall
在字符串中匹配所有滿足正則表達(dá)式的字符串嚼吞,并返回一個(gè)列表盒件,如果沒有找到匹配的,則返回空列表舱禽。
函數(shù)語(yǔ)法
findall(string[,pos[,endpos]])
函數(shù)參數(shù)
string?: 待匹配的字符串履恩。
pos?: 可選參數(shù),指定字符串的起始位置呢蔫,默認(rèn)為 0切心。
endpos?: 可選參數(shù),指定字符串的結(jié)束位置片吊,默認(rèn)為字符串的長(zhǎng)度绽昏。
findall_str=re.findall('i.+?',re_str)
print(findall_str)
# 上面還是使用re.findall的方式,這里推薦使用re.compile生成正則表達(dá)式對(duì)象俏脊,然后按照上面參數(shù)說明使用該函數(shù)全谤,如下。
pattern=re.compile('i.+?')
pattern.findall(re_str)
輸出 ['iv', 'io', 'il', 'it', 'ie']
re.split
split 方法按照能夠匹配的子串將字符串分割后返回列表
函數(shù)語(yǔ)法
re.split(pattern,string[,maxsplit=0,flags=0])
函數(shù)參數(shù)
pattern?: 正則表達(dá)式
string?: 字符串
maxsplit?: 分隔次數(shù)爷贫,maxsplit=1 分隔一次认然,默認(rèn)為 0,不限制次數(shù)漫萄。
flags?: 標(biāo)志位
split_str=re.split('i.+?',re_str)
print(split_str)
輸出 ['The re module g', 'es the Python language full regular express', 'n capab', '', '', 's.']
附 嘔心瀝血整理的正則表達(dá)式的語(yǔ)法規(guī)則
正則表達(dá)式的語(yǔ)法規(guī)則
正則表達(dá)式的語(yǔ)法規(guī)則