python的re函數(shù) python rel

Python re模塊 正則表達(dá)式之compile函數(shù)

為了重復(fù)利用同一個(gè)正則對(duì)象,需要多次使用這個(gè)正則表達(dá)式的話,使用re.compile()保存這個(gè)正則對(duì)象以便復(fù)用,可以讓程序更加高效。

創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為南澳企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),南澳網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1)re.compile

參數(shù):

re.I 忽略大小寫

re.L 表示特殊字符集 w, W, b, B, s, S 依賴于當(dāng)前環(huán)境

re.M 多行模式

re.S 即為' . '并且包括換行符在內(nèi)的任意字符(' . '不包括換行符)

re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依賴于 Unicode 字符屬性數(shù)據(jù)庫(kù)

re.X 為了增加可讀性,忽略空格和' # '后面的注釋

案例:

在上面,當(dāng)匹配成功時(shí)返回一個(gè) Match 對(duì)象,其中:

2)re.findall

在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果有多個(gè)匹配模式,則返回元組列表,如果沒(méi)有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

參數(shù):

案例:

3)re.finditer

和 findall 類似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回。

案例:

4)re.split

split 方法按照能夠匹配的子串將字符串分割后返回列表。

案例:

從上篇Python re模塊 正則表達(dá)式到這篇,我們已經(jīng)把常用的正則匹配的方法學(xué)會(huì)了。

關(guān)注我,堅(jiān)持每日積累一個(gè)技巧, 長(zhǎng)期堅(jiān)持 ,我們將會(huì)不斷進(jìn)步。

#python# #程序員# #請(qǐng)回答,你的年度知識(shí)點(diǎn)# #教育聽我說(shuō)# #計(jì)算機(jī)#

Python re正則表達(dá)式模塊及其用法

1.第一個(gè)參數(shù)是正則表達(dá)式,這里為"(\w+)\s",如果匹配成功,則返回一個(gè)Match,否則返回一個(gè)None;

2.第二個(gè)參數(shù)表示要匹配的字符串;

3.第三個(gè)參數(shù)是標(biāo)致位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。 re.search函數(shù)會(huì)在字符串內(nèi)查找模式匹配,只到找到第一個(gè)匹配然后返回,如果...

4.第四個(gè)參數(shù)指替換個(gè)數(shù)。默認(rèn)為0,表示每個(gè)匹配項(xiàng)都替換。 re.sub還允許使用函數(shù)對(duì)匹配...

python中re庫(kù)的常見用法

. 匹配除換行符外的任意字符

\d 匹配數(shù)字

\D 匹配非數(shù)字

\w 匹配數(shù)字字母下劃線,支持中文

\W 小寫w的反集

[abc] 匹配abc中任意一個(gè)

[a-f] 匹配字母a到f中的任意一個(gè)

x|y 匹配x或者y

^ 匹配字符串的開頭

$ 匹配字符串的結(jié)尾

{3,5} 匹配次數(shù),最少3個(gè),最多5個(gè)

{3,} 至少匹配3次

* 匹配前一個(gè)字符,0次或多次

+ 匹配前一個(gè)字符,1次或多次

? 當(dāng)前面不是數(shù)量表達(dá)式時(shí),代表匹配0次或1次

舉個(gè)栗子:

findall()函數(shù)的作用是匹配所有符合條件字符串,并以列表形式返回

由于.是匹配除換行符外的所有字符,{3,5} 匹配次數(shù),最少3個(gè),最多5個(gè),在默認(rèn)的貪婪模式下會(huì)匹配最多的字符,所以在列表中,字母a開頭的字符串后面都跟了5個(gè)字符。

可以看到在非貪婪模式下,列表中的每一項(xiàng)都匹配最少的字符數(shù)。

從前往后,匹配到符合條件的最短的每一個(gè)字符串

邊界字符:

^ 限定開頭

$ 限定結(jié)尾

匹配分組:

() 提取出來(lái)的只有括號(hào)里匹配到的部分

上文中已經(jīng)用到這個(gè)方法了,返回匹配到的字符串列表,如果沒(méi)有匹配到的內(nèi)容,則返回空列表。

flags參數(shù)是可以省略的,不省略時(shí)代表具有其他特殊的功能,如忽略大小寫,忽略換行符等,re.S代表匹配時(shí)忽略換行符

re.search()和re.findall()的參數(shù)是一樣的,只是返回結(jié)果不同,如果匹配到了,就返回該結(jié)果的正則表達(dá)式對(duì)象;如果沒(méi)有匹配到,則返回None

使用re.search()返回匹配到的第一個(gè)字符串的正則表達(dá)式對(duì)象,找到了就會(huì)停止匹配。因此這個(gè)函數(shù)比較適合在一個(gè)大文本中找第一個(gè)出現(xiàn)的字符串。

若想讓這個(gè)字符串展示出來(lái),還需要借助group()函數(shù)。

舉個(gè)栗子:

這個(gè)函數(shù)的作用是將正則表達(dá)式編譯為一個(gè)正則表達(dá)式對(duì)象,如果要多次使用這個(gè)正則表達(dá)式的話,可以先編譯,然后復(fù)用,使程序更高效一些,對(duì)這個(gè)對(duì)象繼續(xù)使用.match(string)就可以顯示匹配到的正則表達(dá)式對(duì)象,后續(xù)如果想要獲取具體內(nèi)容的話,和上面是一眼國(guó)的,直接使用group(0)就可以啦。

如果不考慮復(fù)用的話,和re.mach(pattern, string)的效果是一樣的。

從運(yùn)行結(jié)果也可以看出,re.match()和re.search()的區(qū)別,雖然二者都會(huì)返回匹配到的正則表達(dá)式對(duì)象,但是re.match()是從字符串的最開始位置開始匹配的,如果最開始的字符不匹配則會(huì)直接返回None;而re.search()則會(huì)一直往后找,直到找到第一個(gè)符合條件的字符串。

re.sub()函數(shù)用于替換字符串中的匹配項(xiàng)

舉個(gè)栗子:

將所有數(shù)字替換為了一個(gè)空格。

re模塊中的常用函數(shù)及其功能

re模塊是Python提供的處理正則表達(dá)式的標(biāo)準(zhǔn)模塊。

match()、search()、findaII()函數(shù)

re.match()函數(shù)嘗試在字符串的起始位置匹配一個(gè)模式,如果匹配成功,則返回MatchObject對(duì)象實(shí)例;否則返回None。re.search()函數(shù)掃描整個(gè)字符串并返回第一個(gè)成功的匹配,匹配成功返回MatchObject對(duì)象實(shí)例,否則返回None。re.findall()函數(shù)在字符串中找到正則表達(dá)式所匹配的所有子字符串,并返回一個(gè)列表;如果沒(méi)有找到匹配的子字符串,則返回空列表。

3個(gè)函數(shù)的語(yǔ)法格式分別為:

其參數(shù)含義相同,說(shuō)明如下。

· pattern:匹配的正則表達(dá)式。

· string:要匹配的字符串。

· flags:標(biāo)志位,用于控制正則表達(dá)式的匹配模式。

下面分別對(duì)這3個(gè)函數(shù)進(jìn)行舉例說(shuō)明。

1.re.match()函數(shù)

如果匹配成功,那么re.match()函數(shù)返回一個(gè)匹配的對(duì)象;否則返回None。

可以使用group(num)或groups()匹配對(duì)象函數(shù)來(lái)獲取匹配表達(dá)式。

2.re.search()函數(shù)

如果匹配成功,那么re.search()函數(shù)返回一個(gè)匹配的對(duì)象;否則返回None。

可以使用group(num)或groups()匹配對(duì)象函數(shù)來(lái)獲取匹配表達(dá)式。

和match()函數(shù)不同的是,search()函數(shù)掃描整個(gè)字符串,并返回第一個(gè)成功的匹配。

3.re.findaII()函數(shù)

re.findall()函數(shù)在字符串中找到正則表達(dá)式所匹配的所有子字符串,并返回一個(gè)列表;如果沒(méi)有找到匹配的子字符串,則返回空列表。

注意

match()和search()函數(shù)只能匹配一次,而findall()函數(shù)可以匹配多次。

compiIe()函數(shù)

re.compile()函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式對(duì)象,供match()和search()函數(shù)使用。

compile()函數(shù)的語(yǔ)法格式如下:

其參數(shù)含義如下。

· pattern:匹配的正則表達(dá)式。

· flags:標(biāo)志位,用于控制正則表達(dá)式的匹配模式。

Python 標(biāo)準(zhǔn)庫(kù)模塊 - re

re模塊被稱為正則表達(dá)式,其作用為,創(chuàng)建一個(gè)“規(guī)則表達(dá)式”,用于驗(yàn)證和查找符合規(guī)則的文本,廣泛用于各種搜索引擎、賬戶密碼的驗(yàn)證等。

預(yù)定義字符:

\d:匹配所有的十進(jìn)制數(shù)字0-9

\D:匹配所有的非數(shù)字,包含下劃線

\s:匹配所有空白字符(空格、TAB等)

\S:匹配所有非空白字符,包含下劃線

\w:匹配所有字母、漢字、數(shù)字a-z A-Z 0-9

\W:匹配所有非字母、漢字、數(shù)字,包含下劃線

特殊字符:

$:匹配一行的結(jié)尾(必須放在正則表達(dá)式最后面)

^:匹配一行的開頭(必須放在正則表達(dá)式最前面)

*:前面的字符可以出現(xiàn)0次或多次(0~無(wú)限)

+:前面的字符可以出現(xiàn)1次或多次(1~無(wú)限)

?:變"貪婪模式"為"勉強(qiáng)模式",前面的字符可以出現(xiàn)0次或1次

.:匹配除了換行符"\n"之外的任意單個(gè)字符

|:兩項(xiàng)都進(jìn)行匹配

[ ]:代表一個(gè)集合,有如下三種情況

[abc]:能匹配其中的單個(gè)字符

[a-z0-9]:能匹配指定范圍的字符,可取反(在最前面加入^)

[2-9] [1-3]:能夠做組合匹配

{ }:用于標(biāo)記前面的字符出現(xiàn)的頻率,有如下情況:

{n,m}:代表前面字符最少出現(xiàn)n次,最多出現(xiàn)m次

{n,}:代表前面字符最少出現(xiàn)n次,最多不受限制

{,m}:代表前面字符最多出現(xiàn)n次,最少不受

{n}:前面的字符必須出現(xiàn)n次

Python之re模塊

re模塊是python獨(dú)有的匹配字符串的模塊,該模塊中提供的很多功能是基于正則表達(dá)式實(shí)現(xiàn)的,

而正則表達(dá)式是對(duì)字符串進(jìn)行模糊匹配,提取自己需要的字符串部分,他對(duì)所有的語(yǔ)言都通用。

1、字符

2、字符集

3、量詞

貪婪模式:總是嘗試匹配盡可能多的字符

非貪婪則相反,總是嘗試匹配盡可能少的字符。

{0,} 匹配前一個(gè)字符 0 或多次,等同于 * 元字符

{+,} 匹配前一個(gè)字符 1 次或無(wú)限次,等同于 + 元字符

{0,1 }匹配前一個(gè)字符 0 次或 1 次,等同于 ? 元字符

如果 () 后面跟的是特殊元字符如 (adc)* 那么*控制的前導(dǎo)字符就是 () 里的整體內(nèi)容,不再是前導(dǎo)一個(gè)字符

4、特殊分組用法表:只對(duì)正則函數(shù)返回對(duì)象的有用

5、斷言

從斷言的表達(dá)形式可以看出,它用的就是分組符號(hào),只不過(guò)開頭都加了一個(gè)問(wèn)號(hào),這個(gè)問(wèn)號(hào)就是在說(shuō)這是一個(gè)非捕獲組,這個(gè)組沒(méi)有編號(hào),不能用來(lái)后向引用,只能當(dāng)做斷言。

匹配 titlexxx/title 中 xxx : (?=title).*(?=/title)

自己理解就是:

5、例子

(1)非

^(?!.*200).*$ ,只匹配200

^(?!.*[200|400]).*$ ,只匹配200和400

[^a-z] 反取,不含a-z字母的

(2) \u4e00-\u9fa5 中文

(3) r"\b([\u4e00-\u9fa5]\s?[\u4e00-\u9fa5]+)\b" # 小 明 匹配這種單字中間有空格的

compile 函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式( Pattern )對(duì)象,供 match() 和 search() 這兩個(gè)函數(shù)使用

match 嘗試從字符串的 起始位置 匹配一個(gè)模式,如果不是起始位置匹配成功的話,返回none。

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

re.match與re.search的區(qū)別:

正則表達(dá)式替換函數(shù)

替換匹配成功的指定位置字符串,并且返回替換次數(shù),可以用兩個(gè)變量分別接受

(2) 兩個(gè)字符以上切割,放在 [ ] 中(不保留分隔符):

(3) 使用 ( ) 捕獲分組(保留分割符):

在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果沒(méi)有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 ,findall 匹配所有。

用法:

注意1:一旦匹配成,再次匹配,是從前一次匹配成功的,后面一位開始的,也可以理解為匹配成功的字符串,不在參與下次匹配

注意2:如果沒(méi)寫匹配規(guī)則,也就是空規(guī)則,返回的是一個(gè)比原始字符串多一位的,空字符串列表

注意3:正則匹配到空字符的情況,如果規(guī)則里只有一個(gè)組,而組后面是 * 就表示組里的內(nèi)容可以是 0 個(gè)或者多過(guò),這樣組里就有了兩個(gè)意思:

一個(gè)意思是匹配組里的內(nèi)容,

二個(gè)意思是匹配組里 0 內(nèi)容(即是空白)

所以盡量避免用 * 否則會(huì)有可能匹配出空字符串

正則表達(dá)式,返回類型為表達(dá)式對(duì)象的

如:_sre.SRE_Match object; span=(6, 7), match='a'

返回對(duì)象的,需要用正則方法取字符串,

當(dāng)前名稱:python的re函數(shù) python rel
地址分享:http://muchs.cn/article20/hhegco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司虛擬主機(jī)、域名注冊(cè)、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作、

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司