Python正則表達式有幾種函數(shù)

這篇文章主要為大家展示了“Python正則表達式有幾種函數(shù)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python正則表達式有幾種函數(shù)”這篇文章吧。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,洞口企業(yè)網(wǎng)站建設,洞口品牌網(wǎng)站建設,網(wǎng)站定制,洞口網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,洞口網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?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ù)的匹配結果就為none。

re.search() 整個字符串,并返回第一個成功的匹配

re.findall() 整個字符串,返回一個list(最常用的)

re.compile() #compile 函數(shù)用于編譯正則表達式,生成一個正則表達式( Pattern )對象

re.split() #將一個字符串按照正則表達式匹配的結果進行分割,返回列表類型

re.sub() #在一個字符串中替換所有匹配正則表達式的子串,返回替換后的字符串

1、re.match函數(shù)

match函數(shù)從頭開始匹配,如果不是起始位置匹配成功的話,match函數(shù)的匹配結果就為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&mdash;&mdash;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ù)字結尾

['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ù)

將一個字符串按照正則表達式匹配的結果進行分割,返回列表類型。

語法如下: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)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁名稱:Python正則表達式有幾種函數(shù)
URL標題:http://www.muchs.cn/article8/gjjoip.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、全網(wǎng)營銷推廣企業(yè)建站、營銷型網(wǎng)站建設、微信小程序、網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設