Python中re模塊的簡(jiǎn)介與相關(guān)函數(shù)

import?re

#pip?包管理模塊

'''

1:re.match函數(shù)

原型:match(pattern,?string,?flags=0)

參數(shù):pattern:匹配的正則表達(dá)式,string:要匹配的字符串,flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

功能:嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置(從字符串0索引開始)匹配成功的話,返回None

????????即:匹配的模式必須在字符串的開頭

#www.baidu.com

#掃描整個(gè)字符串,返回從起始位置成功的匹配

print(re.match('www','www.baidu.com'))#能找到,返回一個(gè)對(duì)象,和www在的索引

print(re.match('www','ww.baidu.com'))#不能找到返回None

print(re.match('www','baidu.wwwcom'))#不能找到返回None

'''

'''

2:re.search函數(shù)

原型:search(pattern,?string,?flags=0)

參數(shù):pattern:匹配的正則表達(dá)式,string:要匹配的字符串,flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

功能:掃描整個(gè)字符串,并返回第一個(gè)成功的匹配

print(re.search('www','baidu.wwwcom'))##能找到,返回一個(gè)對(duì)象,和www在的索引

'''

'''

re.findall函數(shù)

原型:findall(pattern,?string,?flags=0)

參數(shù):pattern:匹配的正則表達(dá)式,string:要匹配的字符串,flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

功能:掃描整個(gè)字符串,并返回結(jié)果列表(可以匹配多個(gè)數(shù)據(jù))

print(re.findall('www','www.baidu.www.com'))

'''

import?re

re.subn

'''

'''

'''

1:字符串切割

str1='sunck?is?a?good?man'

print(str1.strip('?'))

print(re.split(r'?+',str1))

2:字符串的替換和修改

re.sub()

re.sunb()

'''

'''

'''

'''

1:re.finditer函數(shù)

原型:finditer(pattern,?string,?flags=0)

參數(shù):pattern:匹配的正則表達(dá)式,string:要匹配的字符串,flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

功能:于findall類似,掃描整個(gè)字符串,返回的是一個(gè)迭代器

2:re.sub函數(shù)和re.subn函數(shù)

原型:sub(pattern,?repl,?string,?count=0,?flags=0)

????:subn(pattern,?repl,?string,?count=0,?flags=0)

參數(shù):pattern:匹配的正則表達(dá)式,repl:指定的要替換的字符串,string:目標(biāo)字符串,count:最大替換次數(shù),flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

功能:在目標(biāo)字符串中以正則表達(dá)式的規(guī)則匹配字符串,在把他們替換成指定字符串,可以指定替換次數(shù),如果不指定,就會(huì)替換匹配到的所有的字符串

????區(qū)別:sub返回一個(gè)被替換的字符串

?????????subn返回一個(gè)元組,第一個(gè)元素是被替換的字符串,第二個(gè)元素表示被替換的次數(shù)

分組:

概念:除了簡(jiǎn)單的判斷是否匹配之外

????正則表達(dá)式還有提前子串的功能,用()表示的就是提取分組


????str='010-53247654'

????m=re.match(r'(?P<first>\d{3})-(\d{8})',str)

????#使用序號(hào)獲取對(duì)應(yīng)組的信息,group(0)一直代表的原始字符串

????#?P<first>寫在組中給組起名

????print(m.group(0))

????print(m.group(1))

????print(m.group(2))

????#查看匹配的各組情況

????print(m.groups())

編譯:

概念:當(dāng)我們使用正則表達(dá)式時(shí),re模塊會(huì)干兩件事

????1:編譯正則表達(dá)式,如果正則表達(dá)式本身不合法,會(huì)報(bào)錯(cuò)

????2:用編譯后的正則表達(dá)式去匹配對(duì)象

編譯函數(shù):

????re.compile函數(shù)

????原型:compile(pattern,?flags=0)

????參數(shù):pattern:要編譯的正則表達(dá)式

????????flages:標(biāo)志位,用于控制正則表達(dá)式的匹配方式

????????flags的值如下:

????????(常)re.I(忽略大小寫)?

????????re.L(做本地化識(shí)別)

????????(常)re.M(多行匹配,影響^和$)

????????(常)re.S(時(shí).匹配包括換行符在內(nèi)的所有字符)

????????re.U(根據(jù)Unicode字符集字符,影響\w,\W,\b,\B)

????????re.X(使我們以更靈活的格式理解正則表達(dá)式))

????功能:

????#編譯成正則對(duì)象,編譯完后都可以通過編譯對(duì)象(re對(duì)象)來調(diào)用match,search等re函數(shù)

????pat=r'^1(([3578]\d)|(47)\d{8}$'

????re_telephone=re.compile(pat)


????#編譯完后的運(yùn)用,相當(dāng)于調(diào)用re函數(shù)時(shí)少了正則表達(dá)式的輸入

????re_telephone.match(str)

'''

re.compile()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容