這篇文章主要為大家展示了“Python正則表達式有幾種函數(shù)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python正則表達式有幾種函數(shù)”這篇文章吧。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),洞口企業(yè)網(wǎng)站建設(shè),洞口品牌網(wǎng)站建設(shè),網(wǎng)站定制,洞口網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,洞口網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
Python正則表達式是簡介表達一組字符串的表達式,正則表達式可以方便的檢查一個字符串是否與某種模式匹配。有六種在正則表達式中的常見函數(shù),分別是re.match、re.search、re.findall、re.compile、re.split和re.sub。
re.match() tch函數(shù)從頭開始匹配,如果不是起始位置匹配成功的話,match函數(shù)的匹配結(jié)果就為none。
re.search() 整個字符串,并返回第一個成功的匹配
re.findall() 整個字符串,返回一個list(最常用的)
re.compile() #compile 函數(shù)用于編譯正則表達式,生成一個正則表達式( Pattern )對象
re.split() #將一個字符串按照正則表達式匹配的結(jié)果進行分割,返回列表類型
re.sub() #在一個字符串中替換所有匹配正則表達式的子串,返回替換后的字符串
1、re.match函數(shù)
match函數(shù)從頭開始匹配,如果不是起始位置匹配成功的話,match函數(shù)的匹配結(jié)果就為none。匹配成功,re.match方法返回一個匹配的對象。
語法如下:re.match(pattern, string, flags=0)
pattern:需要匹配的正則表達式;
string:在那個字符串中就行匹配 ;
flags:標志位(默認為0),它可以控制正則表達式的匹配方式
常見的flags如下:
re.I 忽略匹配時的大小寫
re.M 多行匹配,影響 ^ 和 $
re.S . 默認不匹配換行,使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B
示例如下:
我們可以看出,match函數(shù)匹配成功的話,re.match方法返回一個匹配的對象,而不是匹配的正則表達式;通過span()可以獲取匹配的位置。
>>> import re
>>> astr='11you are 3344 my apple\n 11開心果,you\n66a77'
>>> re.match('11',astr)
<_sre.SRE_Match object; span=(0, 2), match='11'>
>>> re.match('11',astr).span()
(0, 2)
>>> print(re.match('you',astr))
None
2、re.search函數(shù)
搜索整個字符串,并返回第一個成功的匹配。
語法如下:re.search(pattern, string, flags=0)
pattern:需要匹配的正則表達式;
string:在那個字符串中就行匹配 ;
flags:標志位(默認為0),它可以控制正則表達式的匹配方式
常見的flags如下:
re.I 忽略匹配時的大小寫
re.M 多行匹配,影響 ^ 和 $
re.S . 默認不匹配換行,使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B
示例如下:
我們可以看出,search函數(shù)匹配成功的話,re.search方法返回一個匹配的對象,而不是匹配的正則表達式;通過span()可以獲取匹配的位置。如果沒有匹配到,則返回為None。
>>> import re
>>> astr='11you are 3344 my apple\n 11開心果,you\n66a77'
>>> re.search('11',astr)
<_sre.SRE_Match object; span=(0, 2), match='11'>
>>> re.search('you',astr)
<_sre.SRE_Match object; span=(2, 5), match='you'>
>>> re.search('you',astr).span() #通過span()獲取匹配的位置
(2, 5)
>>> re.search('11',astr).span()
(0, 2)
>>> print(re.search('22',astr))
None
3、re.findall函數(shù)
搜索整個字符串,返回一個list
語法如下:re.findall(string)
>>> import re
>>> astr='1you are 3344 my apple\n 11開心果,you\n66a77'
>>> re.findall('\d\d',astr) #列表形式顯示所有的兩個數(shù)字
['33', '44', '11', '66', '77']
>>> re.findall('\d{2,4}',astr) #列表形式顯示所有的2——4個數(shù)字,默認貪婪匹配
['3344', '11', '66', '77']
>>> re.findall('\d+',astr) #(1,無窮)
['1', '3344', '11', '66', '77']
>>> re.findall('\d*',astr) #(0,無窮)
['1', '', '', '', '', '', '', '', '', '3344', '', '', '', '', '', '', '', '', '', '', '', '11', '', '', '', '', '', '', '', '', '66', '', '77', '']
>>> re.findall('\d?',astr) #匹配0或1
['1', '', '', '', '', '', '', '', '', '3', '3', '4', '4', '', '', '', '', '', '', '', '', '', '', '', '1', '1', '', '', '', '', '', '', '', '', '6', '6', '', '7', '7', '']
>>> re.findall('\d{2,3}?',astr) #一個模式后跟?,不貪婪匹配,范圍后面?,有兩次就先取兩次
['33', '44', '11', '66', '77']
>>> re.findall('\d.\d',astr) #匹配兩個數(shù)字與中間任意字符
['334', '6a7']
>>> re.findall('^\d',astr) #以數(shù)字開頭
['1']
>>> re.findall('^\d',astr,re.M) #多行匹配
['1', '6']
>>> re.findall('\d$',astr) #以數(shù)字結(jié)尾
['7']
>>> re.findall('\d$',astr,re.M) #多行匹配,影響^和$
['7']
>>> re.findall('\d(.)(\d)',astr,re.S)#列表形式返回,每項為一個元組
[('3', '4'), ('a', '7')]
4、re.compile函數(shù)
compile 函數(shù)用于編譯正則表達式,生成一個正則表達式( Pattern )對象。
語法如下:re.compile(pattern,flags=0)
pattern:需要匹配的正則表達式;
flags:標志位(默認為0),它可以控制正則表達式的匹配方式
常見的flags如下:
re.I 忽略匹配時的大小寫
re.M 多行匹配,影響 ^ 和 $
re.S . 默認不匹配換行,使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B
示例如下:
>>> import re
>>> astr='AS12as34er567q!"3456'
>>> m1=re.compile(r'\d\d') #編譯
>>> m1.search(astr).group() #匹配
'12'
>>> m1.findall(astr)
['12', '34', '56', '34', '56']
>>> m2=re.compile(r'a',re.I) #編譯
>>> m2.findall(astr) #匹配
['A', 'a']
5、re.split函數(shù)
將一個字符串按照正則表達式匹配的結(jié)果進行分割,返回列表類型。
語法如下:re.split(pattern, string ,?maxsplit=0?,flags=0)
pattern:需要匹配的正則表達式;
string:在那個字符串中就行匹配 ;
maxsplit:分隔次數(shù),maxsplit=1 分隔一次,默認為 0,不限制次數(shù)。
flags:標志位(默認為0),它可以控制正則表達式的匹配方式。
常見的flags如下:
re.I 忽略匹配時的大小寫
re.M 多行匹配,影響 ^ 和 $
re.S . 默認不匹配換行,使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B
示例如下:
>>> import re
>>> astr='AS12as34er567q!"3456'
>>> astr.split('12') #通過12進行分割
['AS', 'as34er567q!"3456']
>>> re.split("\d{2}",astr) #通過兩個數(shù)字進行分割
['AS', 'as', 'er', '7q!"', '', '']
>>> re.split("\d+",astr) #通過數(shù)字進行分割
['AS', 'as', 'er', 'q!"', '']
>>> m3=re.compile(r'\d+') #與上面等價,運用了compile函數(shù)
>>> m3.split(astr)
['AS', 'as', 'er', 'q!"', '']
>>> m3.split(astr,3) #指定分割幾次
['AS', 'as', 'er', 'q!"3456']
6、re.sub函數(shù)
在一個字符串中替換所有匹配正則表達式的子串,返回替換后的字符串。
語法如下:re.sub(pattern, repl, string, count=0,flags=0)
pattern:需要匹配的正則表達式;
repl : 替換的字符串,也可為一個函數(shù)。
string:在那個字符串中就行匹配 ;
count : 模式匹配后替換的最大次數(shù),默認 0 表示替換所有的匹配。
flags:標志位(默認為0),它可以控制正則表達式的匹配方式
常見的flags如下:
re.I 忽略匹配時的大小寫
re.M 多行匹配,影響 ^ 和 $
re.S . 默認不匹配換行,使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B
示例如下:
>>> import re
>>> astr='AS12as34er567q!"3456'
>>> re.sub("5",'9',astr) #將5替換為9
'AS12as34er967q!"3496'
>>> m4=re.compile(r"\d+")
>>> m4.sub(' ',astr) #將數(shù)字替換為空字符串
'AS as er q!" '
>>> m4.sub(' ',astr,2) #指定替換幾次
'AS as er567q!"3456'
以上是“Python正則表達式有幾種函數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁名稱:Python正則表達式有幾種函數(shù)
URL標題:http://vcdvsql.cn/article8/gjjoip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、全網(wǎng)營銷推廣、企業(yè)建站、營銷型網(wǎng)站建設(shè)、微信小程序、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)