国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第二章 re模塊

這篇具有很好參考價(jià)值的文章主要介紹了第二章 re模塊。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. re模塊介紹

正則表達(dá)式

在處理字符串時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需求。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說(shuō),正則表達(dá)式就是記錄文本規(guī)則的代碼。

re 模塊

Python 提供了 re 模塊用于實(shí)現(xiàn)正則表達(dá)式的操作。在實(shí)現(xiàn)時(shí),可以使用 re 模塊提供的方法,如search()、match()、findall() 等,進(jìn)行字符串處理,也可以先使用 re 模塊的 compile() 方法將模式字符串轉(zhuǎn)換為正則表達(dá)式對(duì)象,然后再使用該正則表達(dá)式對(duì)象的相關(guān)方法來(lái)操作字符串。re 模塊在使用時(shí),需要先用 import 語(yǔ)句引入,具體代碼如下:

import re

2. 定位符,描述字符的邊界

第二章 re模塊

3. 預(yù)定義字符集,標(biāo)準(zhǔn)字符轉(zhuǎn)義序列

第二章 re模塊

4. 通配符,匹配非預(yù)定義字符集合

在正則表達(dá)式中,提供了一個(gè)通配符——英文狀態(tài)下輸入的“.”,用于匹配除“\r”和“\n”以外的任意單個(gè)字符。如果想要使用“.”匹配“\n”換行符,則需要指定 flags=re.DOTALL。例如,“.”可以匹配 mr\nM\tR 中的 m、r、M、\t、R。

5. 非預(yù)定義字符集,匹配非預(yù)定義字符集合

第二章 re模塊

6. 限定符,限定匹配次數(shù)

第二章 re模塊

7. 管道符,“或”操作

正則表達(dá)式中提供了管道符,即“或”操作符,用于匹配兩個(gè)或者多個(gè)正則表達(dá)式中的一個(gè)。例如,A|B,其中 A 和 B 都是正則表達(dá)式,在匹配時(shí),從左到右進(jìn)行匹配,當(dāng)一個(gè)樣式完全匹配時(shí),另一個(gè)就不再匹配。即如果 A 匹配成功,則 B 就不再匹配。

8. 子模式,分組

子模式也就是分組的意思,使用小括號(hào)可以對(duì)正則表達(dá)式進(jìn)行分組。如 (.[0-9]{1,3}){3},就是對(duì)分組 (.[0-9]{1,3}) 進(jìn)行重復(fù)操作。

另外,小括號(hào)字符也可以改變限定符的作用范圍,如“|”“*”“^”等。來(lái)看下面的一個(gè)表達(dá)式:

(thir|four)th

這個(gè)表達(dá)式的意思是匹配單詞 thirth 或 fourth,如果不使用小括號(hào),那么就變成了匹配單詞 thir或 fourth 了。

9. 轉(zhuǎn)義字符,將特殊字符變?yōu)槠胀ㄗ址?/h2>

正則表達(dá)式中的轉(zhuǎn)義字符(\)和 Python 中的大同小異,都是將特殊字符(如“.”“?”“\”等)變?yōu)槠胀ㄗ址?。舉一個(gè) IP 地址的實(shí)例,用正則表達(dá)式匹配諸如 127.0.0.1 這樣格式的 IP 地址,如果直接使用點(diǎn)字符,格式為:

[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

這顯然不對(duì),因?yàn)椤?”可以匹配一個(gè)任意字符。這時(shí),不僅是 127.0.0.1 這樣的 IP,連127101011 這樣的字符串也會(huì)被匹配出來(lái)。所以在使用“.”時(shí),需要使用轉(zhuǎn)義字符(\)。修改后上面的正則表達(dá)式格式為:

[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

10. 可選標(biāo)志修飾符,控制匹配方式

在使用 re 模塊提供的方法時(shí),經(jīng)常需要指定一個(gè) flags 參數(shù),該參數(shù)為標(biāo)志修飾符,是一個(gè)可選參數(shù)。通過(guò)它可以指定是否區(qū)分字母大小寫、多行匹配等。

第二章 re模塊

11. compile()方法,編譯為正則表達(dá)式對(duì)象

語(yǔ)法參考

compile() 方法用于編譯正則表達(dá)式模式,返回一個(gè)對(duì)象的模式。然后可以通過(guò) RegexObject 對(duì)象調(diào)用 match() 和 search() 方法。語(yǔ)法格式如下:

re.compile(pattern,flags=0)

參數(shù)說(shuō)明:

  • pattern :編譯時(shí)用的表達(dá)式字符串。

  • flags :編譯標(biāo)志位,用于修改正則表達(dá)式的匹配方式,如是否區(qū)分大小寫、多行匹配等。

  • 返回值:返回一個(gè)正則表達(dá)式對(duì)象。

錦囊1 查找包含指定字母的單詞

使用 compile() 方法創(chuàng)建一個(gè)可以查找包含指定字母對(duì)應(yīng)單詞的正則表達(dá)式對(duì)象,并輸出符合條件的英文單詞,代碼如下:

import re                                  			# 導(dǎo)入正則表達(dá)式re模塊

# 需要匹配的字符串
string = “Tina is a good girl, she is cool, clever, and so on...match = re.compile(r’\w*oo\w*)                  	# 創(chuàng)建正則表達(dá)式對(duì)象
print(match.findall(string ))                      	# 打印所有包含“oo”的單詞

12. escape()方法,轉(zhuǎn)義特殊字符

語(yǔ)法參考

escape() 方法用于對(duì)字符串中的非字母數(shù)字進(jìn)行轉(zhuǎn)義。語(yǔ)法格式如下:

re.escape(pattern)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • 返回值:返回轉(zhuǎn)義后的字符串。

錦囊1 對(duì)字符串中的非字母數(shù)字進(jìn)行轉(zhuǎn)義

使用 escape() 方法實(shí)現(xiàn)對(duì)字符串中的非字母數(shù)字進(jìn)行轉(zhuǎn)義,代碼如下:

import re                   			# 導(dǎo)入正則表達(dá)式re模塊

# 需要轉(zhuǎn)義的字符串
string = ‘a(chǎn)bcdefghijklmnopqrstuvwxyz0123456789!#$%&*+-.^_`|~’
print(re.escape(string))           		# 打印轉(zhuǎn)義后的字符串

程序運(yùn)行結(jié)果如下:

abcdefghijklmnopqrstuvwxyz0123456789!\#\$%\&\*\+\-\.\^_`\|\~

13. f?indall()方法,搜索所有符合正則表達(dá)式的字符串

語(yǔ)法參考

findall() 方法用于在整個(gè)字符串中搜索所有符合正則表達(dá)式的字符串,并以列表的形式返回。如果匹配成功,則返回包含匹配結(jié)構(gòu)的列表,否則返回空列表。語(yǔ)法格式如下:

re.findall(pattern, string, flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。decimal

  • string :表示要匹配的字符串。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:返回一個(gè)符合表達(dá)式匹配結(jié)果的列表。

錦囊1 搜索以“mr_”開頭的字符串

使用 findall() 方法搜索以“mr_”開頭的字符串,代碼如下:

import re                                     			# 導(dǎo)入正則表達(dá)式re模塊

pattern = r’mr_\w+# 模式字符串
string = ‘MR_SHOP mr_shop’                   			# 要匹配的字符串
match = re.findall(pattern,string,re.I)                	# 搜索字符串,不區(qū)分大小寫
print(match)                               				# 打印匹配結(jié)果

string = ‘項(xiàng)目名稱MR_SHOP mr_shop’
match = re.findall(pattern,string)                 		# 搜索字符串,區(qū)分大小寫
print(match)                               				# 打印匹配結(jié)果

14. f?inditer()方法,找到所匹配的所有子串

語(yǔ)法參考

finditer() 方法和 findall() 方法類似,它的功能為在字符串中找到正則表達(dá)式所匹配的所有子串,但是把它們作為一個(gè)迭代器返回。語(yǔ)法格式如下:

re.finditer(pattern, string, flags=0)

參數(shù)說(shuō)明:

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

  • string :表示要匹配的字符串。

  • flags :表示標(biāo)志位,用戶控制正則表達(dá)式的匹配方式,如是否區(qū)分大小寫、多行匹配等。

  • 返回值:返回一個(gè)符合表達(dá)式匹配結(jié)果的迭代器。

錦囊1 獲取字符串中的數(shù)字

使用 finditer() 方法獲取字符串中的所有數(shù)值,代碼如下:

import re                              		# 導(dǎo)入正則表達(dá)式re模塊

# 獲取字符串中的數(shù)字
it = re.finditer(r”\d+,”12a32bc43jf3”)

# 便利獲取后的迭代對(duì)象
for match in it:
	print (match.group())                  	# 打印數(shù)字

15. fullmatch()方法,對(duì)整個(gè)字符串進(jìn)行匹配

語(yǔ)法參考

fullmatch() 方法用于對(duì)整個(gè)字符串進(jìn)行匹配,如果整個(gè)字符串匹配到正則表達(dá)式樣式,就返回一個(gè)相應(yīng)的匹配對(duì)象,否則就返回一個(gè) None。語(yǔ)法格式如下:

re.fullmatch(pattern,string,flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • string :表示要匹配的字符串。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:如果整個(gè) string 匹配到正則表達(dá)式樣式,就返回一個(gè)相應(yīng)的 Match 對(duì)象。

錦囊1 匹配整個(gè)字符串

使用 fullmatch() 方法實(shí)現(xiàn)匹配整個(gè)字符串,代碼如下:

import re                                      		# 導(dǎo)入正則表達(dá)式re模塊
string1 = “mr00soft”                             	# 需要匹配的字符串

# 匹配包括下劃線在內(nèi)的任何字符,并匹配前面的子表達(dá)式一次或多次
match1 = re.fullmatch(‘\w+, string1)

# 單個(gè)字符匹配任意次,貪婪匹配
match2 = re.fullmatch(.*, string1)decimal

# 匹配多個(gè)數(shù)字
match3 = re.fullmatch(‘\d+, string1)
print(match1)
print(match2)
print(match3)

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(0, 8), match='mr00soft'>
<re.Match object; span=(0, 8), match='mr00soft'>
None

16. match()方法,從字符開始處進(jìn)行匹配

語(yǔ)法參考

match() 方法用于從字符串的開始處進(jìn)行匹配,如果在起始位置匹配成功,則返回 Match 對(duì)象,否則返回 None。語(yǔ)法格式如下:

re.match(pattern,string,flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • string :表示要匹配的字符串。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:如果 string 的開始處有 0 或多個(gè)字符匹配到了正則表達(dá)式樣式,就返回一個(gè)相應(yīng)的 Match 對(duì)象。

錦囊1 判斷匹配字符串是否以“mr_”開頭

使用 match() 方法判斷匹配字符串是否以“mr_”開頭,不區(qū)分字母大小寫,代碼如下:

import re                                		# 導(dǎo)入正則表達(dá)式re模塊

pattern = r’mr_\w+# 模式字符串
string = ‘MR_SHOP mr_shop’                		# 要匹配的字符串
match = re.match(pattern,string,re.I)           # 匹配字符串,不區(qū)分大小寫
print(match)                             		# 打印匹配結(jié)果

string = ‘項(xiàng)目名稱MR_SHOP mr_shop’
match = re.match(pattern,string,re.I)           # 匹配字符串,不區(qū)分大小寫
print(match)                             		# 打印匹配結(jié)果

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(0, 7), match='MR_SHOP'>
None

17. search()方法,搜索第一個(gè)匹配位置

語(yǔ)法參考

search() 方法用于在整個(gè)字符串中搜索第一個(gè)匹配的值,如果匹配成功,則返回 Match 對(duì)象,否則返回 None。語(yǔ)法格式如下:

re.search(pattern,string,flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • string :表示要匹配的字符串。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:掃描整個(gè)字符串找到匹配樣式的第一個(gè)位置,并返回一個(gè)相應(yīng)的匹配對(duì)象。如果沒(méi)有匹配,就返回一個(gè) None。注意,這和找到一個(gè)零長(zhǎng)度匹配是不同的。

錦囊1 搜索第一個(gè)以“mr_”開頭的字符串

使用 search() 方法搜索第一個(gè)以“mr_”開頭的字符串,不區(qū)分字母大小寫,代碼如下:

import re                                  		# 導(dǎo)入正則表達(dá)式re模塊

pattern = r’mr_\w+# 模式字符串
string = ‘MR_SHOP mr_shop’                  	# 要匹配的字符串
match = re.search(pattern,string,re.I)          # 搜索字符串,不區(qū)分大小寫
print(match)                                	# 打印匹配結(jié)果

string = ‘項(xiàng)目名稱MR_SHOP mr_shop’
match = re.search(pattern,string,re.I)         	# 搜索字符串,不區(qū)分大小寫
print(match)                                	# 打印匹配結(jié)果

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(0, 7), match='MR_SHOP'>
<re.Match object; span=(4, 11), match='MR_SHOP'>

18. split()方法,根據(jù)正則表達(dá)式分割字符串

語(yǔ)法參考

split() 方法用于實(shí)現(xiàn)根據(jù)正則表達(dá)式分割字符串,并以列表的形式返回。其作用同字符串對(duì)象的 split() 方法類似,所不同的就是分割字符由模式字符串指定。語(yǔ)法格式如下:

re.split(pattern,string,maxsplit=0,flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • string :表示要匹配的字符串。

  • maxsplit :可選參數(shù),表示最大的拆分次數(shù)。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:返回一個(gè)分割后的字符串列表。

錦囊1 從給定的 URL 地址中提取出請(qǐng)求地址和各個(gè)參數(shù)

使用split()方法實(shí)現(xiàn)從給定的 URL 地址中提取出請(qǐng)求地址和各個(gè)參數(shù)的功能,代碼如下:

import re                               		# 導(dǎo)入正則表達(dá)式re模塊

pattern = r’[?|&]# 定義分割符
url = ‘http://www.888.com/login.jsp?username=”mr”&pwd=”mrsoft”’
result = re.split(pattern,url)                 	# 分割字符串
print(result)

程序運(yùn)行結(jié)果如下:

['http://www.888.com/login.jsp','username="mr"','pwd="mrsoft"']

19. sub()方法,字符串替換

語(yǔ)法參考

sub() 方法用于實(shí)現(xiàn)字符串替換。語(yǔ)法格式如下:

re.sub(pattern,repl,string,count=0,flags=0)52

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • repl :表示替換的字符串。

  • string :表示要被查找替換的原始字符串。

  • count :可選參數(shù),表示模式匹配后替換的最大次數(shù),默認(rèn)值為 0,表示替換所有的匹配。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:返回替換后的字符串。

錦囊1 隱藏中獎(jiǎng)信息中的手機(jī)號(hào)碼

使用 sub() 方法實(shí)現(xiàn)隱藏中獎(jiǎng)信息中的手機(jī)號(hào)碼的功能,代碼如下:

import re                                      			# 導(dǎo)入正則表達(dá)式re模塊
pattern = r’1[34578]\d{9}# 定義要替換的模式字符串
string = ‘中獎(jiǎng)號(hào)碼為:84978981 聯(lián)系電話為:13611111111’
result = re.sub(pattern,’1XXXXXXXXXX’,string)       	# 替換字符串
print(result)

程序運(yùn)行結(jié)果如下:

中獎(jiǎng)號(hào)碼為:84978981 聯(lián)系電話為:1XXXXXXXXXX

錦囊2 排除字符串中的漢字、字母與數(shù)字

使用 sub() 方法排除字符串中的漢字、字母與數(shù)字,代碼如下:

import re

# 定義需要篩選的字符串
string = ‘a(chǎn)bcdefghijklmnopqrstuvwxyz我愛Python0123456789!#$%&*+-.^_`|~’
result = re.sub([A-Za-z0-9\u4e00-\u9fa5], ““, string) 		# 替換字符串
print(result)                                 					# 打印替換結(jié)果

程序運(yùn)行結(jié)果如下:

!#$%&*+-.^_`|~

20. subn()方法,字符串替換 (含替換次數(shù))

語(yǔ)法參考

subn() 方法與 sub() 方法相同,都是用于實(shí)現(xiàn)字符串的替換。但 subn() 方法返回一個(gè)元組,其中包含新字符串和替換次數(shù)。語(yǔ)法格式如下:

re.subn(pattern,repl,string,count=0,flags=0)

參數(shù)說(shuō)明:

  • pattern :表示模式字符串,由要匹配的正則表達(dá)式轉(zhuǎn)換而來(lái)。

  • repl :表示替換的字符串。

  • string :表示要被查找替換的原始字符串。

  • count :可選參數(shù),表示模式匹配后替換的最大次數(shù),默認(rèn)值為 0,表示替換所有的匹配。

  • flags :可選參數(shù),表示標(biāo)志位,用于控制匹配方式,如是否區(qū)分字母大小寫。

  • 返回值:返回一個(gè)包含替換后字符串與替換次數(shù)的元組。

錦囊1 替換字符串中的指定內(nèi)容

使用 subn() 方法實(shí)現(xiàn)替換字符串中的指定內(nèi)容的功能,代碼如下:

import re                             						# 導(dǎo)入正則表達(dá)式re模塊

print(re.subn([1-2],’A’,’123456abcdef’))    				# 打印元組,包含新字符串與替換次數(shù)
print(re.sub(‘g.t’,’have’,’I get A, I got B ,I gut C’)) 	# 打印新字符串
print(re.subn(‘g.t’,’have’,’I get A, I got B ,I gut C’))	# 打印元組,包含新字符串與替換次數(shù)

21. Pattern.flags屬性,獲取正則匹配標(biāo)記

語(yǔ)法參考

Pattern.flags 屬性用于獲取正則表達(dá)式中匹配模式對(duì)應(yīng)的標(biāo)記。語(yǔ)法格式如下:

Pattern.flags

錦囊1 獲取常見匹配模式對(duì)應(yīng)的標(biāo)記

使用 Pattern.flags 屬性獲取常見匹配模式對(duì)應(yīng)的標(biāo)記,代碼如下:

import re                         				# 導(dǎo)入正則表達(dá)式re模塊

pattern_I = re.compile(‘\w+,flags=re.I)  		# 匹配模式,忽略大小寫
pattern_M= re.compile(‘\w+,flags=re.M) 		# 匹配模式,多行
pattern_S = re.compile(‘\w+,flags=re.S) 		# 匹配模式,使用“.”字符匹配所有字符,包括換行符
pattern_X = re.compile(‘\w+,flags=re.X)		# 匹配模式,忽略模式字符串中未轉(zhuǎn)義的空格和注釋

print(‘匹配模式I的標(biāo)記為:',pattern_I.flags)
print(‘匹配模式M的標(biāo)記為:',pattern_M.flags)
print(‘匹配模式S的標(biāo)記為:',pattern_S.flags)
print(‘匹配模式X的標(biāo)記為:',pattern_X.flags)

22. Pattern.groups屬性,捕獲組合的數(shù)量

語(yǔ)法參考

Pattern.groups 屬性用于獲取正則表達(dá)式中組合的數(shù)量。語(yǔ)法格式如下:

Pattern.groups

錦囊1 獲取正則表達(dá)式中組合的數(shù)量

使用 Pattern.groups 屬性獲取正則表達(dá)式中組合的數(shù)量,代碼如下:

import re                            			# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((\w+) (\w+))        		# 組合表達(dá)式
print(‘組合數(shù)量為:',pattern.groups)

23. Pattern.groupindex屬性,獲取分組名稱與對(duì)應(yīng)的分組編號(hào)

語(yǔ)法參考

Pattern.groupindex 屬性用于獲取正則表達(dá)式中分組名稱與對(duì)應(yīng)的分組編號(hào)。語(yǔ)法格式如下:

Pattern.groupindex

錦囊1 獲取表達(dá)式中分組名稱與對(duì)應(yīng)的分組編號(hào)

使用 Pattern.groupindex 屬性獲取表達(dá)式中分組名稱與對(duì)應(yīng)的分組編號(hào),代碼如下:

import re                                         				# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+)) 		# 分組表達(dá)式
print(‘分組名稱與對(duì)應(yīng)的編號(hào)為:',pattern.groupindex)

程序運(yùn)行結(jié)果如下:

分組名稱與對(duì)應(yīng)的編號(hào)為: {'group_1': 1, 'group_2': 2}

24. Pattern.pattern屬性,獲取模式字符串

語(yǔ)法參考

Pattern.pattern 屬性用于獲取正則表達(dá)式中的模式字符串。語(yǔ)法格式如下:

Pattern.pattern

錦囊1 獲取表達(dá)式中的模式字符串

使用 Pattern.pattern 屬性獲取表達(dá)式中的模式字符串,代碼如下:

import re                                         				# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+)) 		# 分組表達(dá)式
print(pattern.pattern)

程序運(yùn)行結(jié)果如下:

(?P<group_1>\w+) (?P<group_2>\w+)

25. Pattern.f?indall()方法,搜索所有符合正則表達(dá)式的字符串

語(yǔ)法參考

Pattern.findall() 方法用于在整個(gè)字符串中搜索所有符合正則表達(dá)式的字符串,并以列表的形式返回。如果匹配成功,則返回包含匹配結(jié)構(gòu)的列表,否則返回空列表。該方法可以指定匹配字符串的范圍。語(yǔ)法格式如下:

Pattern.findall(string[,pos[,endpos]])

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • pos :表示匹配的起始位置,該參數(shù)為可選參數(shù),默認(rèn)值為 0。

  • endpos :表示匹配的結(jié)束位置,該參數(shù)為可選參數(shù),默認(rèn)為需要匹配字符串的長(zhǎng)度,所以只有從 pos 到 endpos-1 的字符會(huì)被匹配。

  • 返回值:返回一個(gè)符合表達(dá)式匹配結(jié)果的列表。

錦囊1 搜索字符串中以“mr_”開頭的字符串

使用 Pattern.findall() 方法搜索字符串中以“mr_”開頭的字符串,代碼如下:

import re                                                      	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile(‘mr_\w+)                             		# 正則表達(dá)式對(duì)象
string = ‘mr_SHOP mr_shop’                               		# 要匹配的字符串
match = pattern.findall(string)                             	# 搜索字符串

print(match)                                                   	# 打印匹配結(jié)果
print(pattern.findall(string,0,5))                         		# 打印下標(biāo)0~5的結(jié)果

程序運(yùn)行結(jié)果如下:

['mr_SHOP', 'mr_shop']
['mr_SH']

26. Pattern.f?inditer()方法,搜索所匹配的所有子串

語(yǔ)法參考

Pattern.finditer() 方法用于在字符串中找到正則表達(dá)式所匹配的所有子串,把它們作為一個(gè)迭代器返回。該方法可以指定匹配字符串的范圍。語(yǔ)法格式如下:

Pattern.finditer(string[,pos[,endpos]])

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • pos :表示匹配的起始位置,該參數(shù)為可選參數(shù),默認(rèn)值為 0。

  • endpos :表示匹配的結(jié)束位置,該參數(shù)為可選參數(shù),默認(rèn)為需要匹配字符串的長(zhǎng)度,所以只有從 pos 到 endpos-1 的字符會(huì)被匹配。

  • 返回值:返回一個(gè)符合表達(dá)式匹配結(jié)果的迭代器。

錦囊1 獲取字符串中指定范圍的所有數(shù)字

使用 Pattern.finditer() 方法獲取字符串中指定范圍的所有數(shù)字,代碼如下:

import re                      			# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile(‘\d+)         	# 正則表達(dá)式對(duì)象
string = ‘12a32bc43jf3’           		# 要匹配的字符串
it = pattern.finditer(string,2,8)

# 遍歷獲取后的迭代對(duì)象
for match in it:
	print (match.group())          		# 打印數(shù)字

27. Pattern.fullmatch()方法,對(duì)整個(gè)字符串匹配

語(yǔ)法參考

Pattern.fullmatch() 方法用于對(duì)整個(gè)字符串匹配。從 pos 下標(biāo)位置開始逐個(gè)對(duì)字符串進(jìn)行匹配直到 endpos 下標(biāo)位置,如果匹配成功則返回匹配成功的 Match 對(duì)象;如果沒(méi)有匹配成功,就返回None。語(yǔ)法格式如下:

Pattern.fullmatch(string[,pos[,endpos]])

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • pos :表示匹配的起始位置,該參數(shù)為可選參數(shù),默認(rèn)值為 0。

  • endpos :表示匹配的結(jié)束位置,該參數(shù)為可選參數(shù),默認(rèn)為需要匹配字符串的長(zhǎng)度,所以只有從 pos 到 endpos-1 的字符會(huì)被匹配。

  • 返回值:如果整個(gè) string 匹配到正則表達(dá)式樣式,就返回一個(gè)相應(yīng)的 Match 對(duì)象。

錦囊1 獲取字符串中開始處符合表達(dá)式的值

使用 Pattern.fullmatch() 方法獲取字符串中開始處符合表達(dá)式的值,代碼如下:

import re                        			# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile([a-z]+)        		# 定義匹配字母的表達(dá)式
string = ‘a(chǎn)bcskd123jaw123’         			# 需要匹配的字符串
print(pattern.fullmatch(string,0,5))    	# 打印匹配結(jié)果,匹配范圍0~5

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(0, 5), match='abcsk'>

28. Pattern.match()方法,從字符開始處匹配字符串的值

語(yǔ)法參考

Pattern.match() 方法用于從字符開始處匹配字符串的值,從 pos 下標(biāo)位置開始逐個(gè)對(duì)字符串進(jìn)行匹配直到 endpos 下標(biāo)位置,如果匹配成功則返回匹配成功的 Match 對(duì)象;如果沒(méi)有匹配成功,就返回 None。語(yǔ)法格式如下:

Pattern.match(string[,pos[,endpos]])

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • pos :表示匹配的起始位置,該參數(shù)為可選參數(shù),默認(rèn)值為 0。

  • endpos :表示匹配的結(jié)束位置,該參數(shù)為可選參數(shù),默認(rèn)為需要匹配字符串的長(zhǎng)度,所以只有從 pos 到 endpos-1 的字符會(huì)被匹配。

  • 返回值:如果 string 開始的位置可以匹配到正則表達(dá)式樣式,就返回一個(gè)相應(yīng)的 Match 對(duì)象。

錦囊 獲取字符串中開始處符合表達(dá)式的值

使用 Pattern.match() 方法獲取字符串中開始處符合表達(dá)式的值,代碼如下:

import re                                 		# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile([a-z]+)                 	# 定義匹配字母的表達(dá)式
string = ‘12312abc1234546lskdj’              	# 需要匹配的字符串
print(pattern.match(string,5,10))              	# 打印匹配結(jié)果,匹配范圍5~10

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(5, 8), match='abc'>

29. Pattern.search()方法,搜索第一個(gè)匹配的位置

語(yǔ)法參考

Pattern.search() 方法用于搜索第一個(gè)匹配的位置,從 pos 下標(biāo)位置開始逐個(gè)對(duì)字符串進(jìn)行匹配直到 endpos 下標(biāo)位置,如果匹配成功,則返回匹配成功的 Match 對(duì)象,否則返回 None。語(yǔ)法格式如下:

Pattern.search(string[,pos[,endpos]])

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • pos :表示匹配的起始位置,該參數(shù)為可選參數(shù),默認(rèn)值為 0。

  • endpos :表示匹配的結(jié)束位置,該參數(shù)為可選參數(shù),默認(rèn)為需要匹配字符串的長(zhǎng)度,所以只有從 pos 到 endpos-1 的字符會(huì)被匹配。

  • 返回值:掃描整個(gè)字符串找到匹配樣式的第一個(gè)位置,并返回一個(gè)相應(yīng)的匹配對(duì)象。

錦囊1 獲取字符串中第一個(gè)匹配值與位置

使用 Pattern.search() 方法獲取字符串中第一個(gè)匹配值與位置,代碼如下:

import re                       			# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile([0-9]+)          	# 定義匹配數(shù)字的表達(dá)式
string = ‘12312abc1234546lskdj’     		# 需要匹配的字符串
print(pattern.search(string,0,10))     		# 打印匹配結(jié)果,匹配范圍0~10

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(0, 5), match='12312'>

30. Pattern.split()方法,同split()方法

語(yǔ)法參考

Pattern.split() 方法與 re.split() 方法相同,用于實(shí)現(xiàn)根據(jù)正則表達(dá)式分割字符串,并以列表的形式返回。其作用同字符串對(duì)象的 split() 方法類似,所不同的是分割字符由模式字符串指定。語(yǔ)法格式如下:

Pattern.split(string,maxsplit=0)

參數(shù)說(shuō)明:

  • string :表示需要匹配的字符串。

  • maxsplit :可選參數(shù),表示最大的拆分次數(shù)。

  • 返回值:返回一個(gè)分割后的字符串列表。

錦囊1 從給定的 URL 地址中提取出請(qǐng)求地址和各個(gè)參數(shù)

使用 Pattern.split() 方法實(shí)現(xiàn)從給定的 URL 地址中提取出請(qǐng)求地址和各個(gè)參數(shù),代碼如下:

import re                                            	# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile([?|&])                  			# 定義分割符
url = ‘http://www.888.com/login.jsp?username=”mr”&pwd=999”’
result = pattern.split(url)                      		# 分割字符串
print(result)
['http://www.888.com/login.jsp', 'username="mr"', 'pwd="999"']

31. Pattern.sub()方法,字符串替換

語(yǔ)法參考

Pattern.sub() 方法與 re.sub() 方法相同,用于實(shí)現(xiàn)字符串替換。語(yǔ)法格式如下:

Pattern.sub(repl,string,count=0)

參數(shù)說(shuō)明:

  • repl :表示替換的字符串。

  • string :表示要被查找替換的原始字符串。

  • count :可選參數(shù),表示模式匹配后替換的最大次數(shù),默認(rèn)值為 0,表示替換所有的匹配。

  • 返回值:返回替換后的字符串。

錦囊1 隱藏中獎(jiǎng)信息中的手機(jī)號(hào)碼

使用 Pattern.sub() 方法實(shí)現(xiàn)隱藏中獎(jiǎng)信息中的手機(jī)號(hào)碼的功能,代碼如下:

import re                                                     	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile(1[34578]\d{9})                         	# 定義要替換的模式字符串
string = ‘中獎(jiǎng)號(hào)碼為:84978981 聯(lián)系電話為:13611111111’
result = pattern.sub(‘1XXXXXXXXXX’,string)             			# 替換字符串
print(result)

32. Pattern.subn()方法,字符串替換(含替換次數(shù))

語(yǔ)法參考

Pattern.subn() 方法與 re.subn() 方法相同,都是用于實(shí)現(xiàn)字符串的替換并返回一個(gè)元組,其中包含新字符串和替換次數(shù)。語(yǔ)法格式如下:

Pattern.subn(repl,string,count=0)

參數(shù)說(shuō)明:

  • repl :表示替換的字符串。

  • string :表示要被查找替換的原始字符串。

  • count :可選參數(shù),表示模式匹配后替換的最大次數(shù),默認(rèn)值為 0,表示替換所有的匹配。

  • 返回值:返回一個(gè)包含替換后字符串與替換次數(shù)的元組。

錦囊 替換字符串中的指定內(nèi)容

使用 Pattern.subn() 方法實(shí)現(xiàn)替換字符串中的指定內(nèi)容的功能,代碼如下:

import re                           		# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile([1-2])  				# 數(shù)值替換表達(dá)式,替換字符串中的1-2
pattern2 = re.compile(‘g.t’)   				# 字幕替換表達(dá)式,替換字符串中的get、got、gut

# 需要匹配的字符串
string = ‘123456abcdef’
string2 = ‘I get A, I got B ,I gut C’
print(pattern.subn(‘A’,string)) 			# 打印元組,包含新字符串與替換次數(shù)
print(pattern2.sub(‘have’,string2))   		# 打印新字符串
print(pattern2.subn(‘have’,string2)) 		# 打印元組,包含新字符串與替換次數(shù)

33. Match.endpos屬性,結(jié)束匹配的索引位置

語(yǔ)法參考

Match.endpos 屬性用于獲取正則表達(dá)式在字符串結(jié)束匹配的索引位置。語(yǔ)法格式如下:

Match.endposdecimal

錦囊1 獲取正則表達(dá)式在字符串結(jié)束匹配的索引位置

使用 Match.endpos 屬性獲取正則表達(dá)式在字符串結(jié)束匹配的索引位置,代碼如下:

import re                                      	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile(‘mr_\w+)          		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’             			# 要匹配的字符串
match=re.search(pattern,string)           		# 匹配結(jié)果Match對(duì)象

print(match)                                	# 打印匹配的Match對(duì)象
print(match.endpos)                         	# 打印匹配的結(jié)束位置

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(8, 15), match='mr_shop'>
15

34. Match.pos屬性,開始匹配的索引位置

語(yǔ)法參考

Match.pos 屬性用于獲取正則表達(dá)式在字符串開始匹配的索引位置。語(yǔ)法格式如下:

Match.pos

錦囊1 獲取正則表達(dá)式在字符串開始匹配的索引位置

使用 Match.pos 屬性獲取正則表達(dá)式在字符串開始匹配的索引位置,代碼如下:

import re                                       	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile(‘mr_\w+)             			# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’             				# 要匹配的字符串
match=re.search(pattern,string)           			# 匹配結(jié)果Match對(duì)象
print(match)                                    	# 打印匹配的Match對(duì)象
print(match.pos)                               		# 打印匹配的起始位置

程序運(yùn)行結(jié)果如下:

<re.Match object; span=(8, 15), match='mr_shop'>
0

35. Match.lastindex屬性,捕獲組的最后一個(gè)匹配的索引值

語(yǔ)法參考

Match.lastindex 屬性用于捕獲組的最后一個(gè)匹配的索引值。語(yǔ)法格式如下:

Match.lastindex

錦囊1 獲取最后一個(gè)匹配到的組所對(duì)應(yīng)的索引值

使用 Match.lastindex 屬性獲取最后一個(gè)匹配到的組所對(duì)應(yīng)的索引值,代碼如下:

import re                                      						# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)   	# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’             								# 要匹配的字符串
match=re.match(pattern,string)            							# 匹配結(jié)果Match對(duì)象
print(match.lastindex)                       						# 打印最后一個(gè)匹配到的組所對(duì)應(yīng)的索引值

36. Match.lastgroup屬性,獲取最后一個(gè)匹配組的名稱

語(yǔ)法參考

Match.lastgroup 屬性用于獲取最后一個(gè)匹配組的名稱,如果匹配的組沒(méi)有名字或者沒(méi)有產(chǎn)生匹配的情況下,則返回 None。語(yǔ)法格式如下:

Match.lastgroup

錦囊1 獲取最后一個(gè)匹配組的名稱

使用 Match.lastgroup 屬性獲取最后一個(gè)匹配組的名稱,代碼如下:decimal

import re                                                       	# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop‘                              			# 要匹配的字符串
match=re.match(pattern,string)                             			# 匹配結(jié)果Match對(duì)象
print(match.lastgroup)                                       		# 打印最后一個(gè)匹配組的名稱

37. Match.re屬性,返回正則表達(dá)式對(duì)象

語(yǔ)法參考

Match.re 屬性用于獲取產(chǎn)生 Match 實(shí)例的正則表達(dá)式對(duì)象。語(yǔ)法格式如下:

Match.re

錦囊1 獲取產(chǎn)生 Match 實(shí)例的正則表達(dá)式對(duì)象

使用 Match.re 屬性獲取產(chǎn)生 Match 實(shí)例的正則表達(dá)式對(duì)象,代碼如下:

import re                                                               	# 導(dǎo)入正則表達(dá)式re模塊
pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)				# 分組表達(dá)式
string = ‘MR_SHOP mr_shop‘                                      			# 要匹配的字符串
match=re.match(pattern,string)                                    			# 匹配結(jié)果Match對(duì)象
print(match.re)                                                        		# 打印獲取的表達(dá)式對(duì)象

程序運(yùn)行結(jié)果如下:

re.compile('(?P<group_1>\\w+) (?P<group_2>\\w+)', re.IGNORECASE)

38. Match.string屬性,獲取需要匹配的字符串

語(yǔ)法參考

Match.string 屬性用于獲取 Match 對(duì)象中需要匹配的字符串。語(yǔ)法格式如下:

Match.string

錦囊1 獲取 Match 對(duì)象中需要匹配的字符串

使用 Match.string 屬性獲取 Match 對(duì)象中需要匹配的字符串,代碼如下:

import re                                            				# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)   	# 分組表達(dá)式
string = ‘MR_SHOP mr_shop‘                   						# 要匹配的字符串
match=re.match(pattern,string)                 						# 匹配結(jié)果Match對(duì)象
print(match.string)                                 				# 打印Match對(duì)象中需要匹配的字符串

39. Match.__getitem__()方法,返回一個(gè)匹配的分組信息

語(yǔ)法參考

Match.__getitem__() 方法與 Match.group() 方法相似,只是 __getitem__() 方法每次只能獲取一個(gè)分組的信息。語(yǔ)法格式如下:

Match.__getitem__(g)

參數(shù)說(shuō)明:

  • g :表示分組對(duì)應(yīng)的編號(hào)或分組名稱。

  • 返回值:返回一個(gè)匹配的分組信息。

錦囊1 獲取指定分組對(duì)應(yīng)的信息

使用 Match.getitem() 方法獲取指定分組對(duì)應(yīng)的信息,代碼如下:

import re                                                       	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop‘                              			# 要匹配的字符串
match=re.match(pattern,string)                             			# 匹配結(jié)果Match對(duì)象
print(match.__getitem__(1))                             			# 打印指定分組編號(hào)對(duì)應(yīng)內(nèi)容
print(match.__getitem__(‘group_2’))                      			# 打印指定分組名對(duì)應(yīng)內(nèi)容

40. Match.end()方法,返回分組匹配字符串對(duì)應(yīng)的結(jié)束標(biāo)記

語(yǔ)法參考

Match.end() 方法用于獲取分組匹配字符串對(duì)應(yīng)的結(jié)束標(biāo)記。語(yǔ)法格式如下:

Match.end([group])

參數(shù)說(shuō)明:

  • group :表示分組名或者分組名對(duì)應(yīng)的編號(hào)。

  • 返回值:返回分組匹配字符串對(duì)應(yīng)的結(jié)束標(biāo)記。

錦囊1 獲取分組匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記

使用 Match.start() 方法與 Match.end() 方法獲取分組匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記,代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491258.html

import re                         									# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)   	# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’ 											# 要匹配的字符串
match=re.match(pattern,string) 										# 匹配結(jié)果Match對(duì)象
print(match.start(),match.end()) 									# 打印全部分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(1),match.end(1))									# 打印編號(hào)1分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(2),match.end(2))									# 打印編號(hào)2分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記

# 打印分組名的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(‘group_1’),match.end(‘group_2’))

41. Match.expand()方法,對(duì)“\”進(jìn)行轉(zhuǎn)義替換并返回

語(yǔ)法參考

Match.expand() 方法用于實(shí)現(xiàn)把字符串中用反斜杠“\”表示的數(shù)字或組名替換為相應(yīng)分組中的值的功能。語(yǔ)法格式如下:

Match.expand(template)

參數(shù)說(shuō)明:

  • template :表示需要替換的字符串。

  • 返回值:返回對(duì)“\”進(jìn)行轉(zhuǎn)義替換的結(jié)果。

錦囊1 在字符串中指定位置替換對(duì)應(yīng)分組中的值

使用 Match.expand() 方法,在字符串中指定位置替換對(duì)應(yīng)分組中的值,代碼如下:

import re                                                             	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)   		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop‘                      						# 要匹配的字符串
match=re.match(pattern,string)                      					# 匹配結(jié)果Match對(duì)象
print(match[1])                                  						# 打印分組1內(nèi)容
print(match[2                                   						# 打印分組2內(nèi)容

# 第一種替換方式,\1、\2替換分組1和2的內(nèi)容
print(match.expand(r‘first_ \1 \2))

# 第二種替換方式,\g<1>、\g<2>替換分組1和2的內(nèi)容
print(match.expand(‘second_ \g<1> \g<2>))

# 第三種替換方式,\g<group_1>、\g<group_2>替換分組1和2的內(nèi)容
print(match.expand(‘third_ \g<group_1> \g<group_2>))

42. Match.groups()方法,以元組形式返回所有子組中內(nèi)容

語(yǔ)法參考

Match.groups() 方法用于獲取以元組形式返回所有子組中內(nèi)容。語(yǔ)法格式如下:

Match.groups(default=None)

參數(shù)說(shuō)明:

  • default :用于不參與匹配的情況,默認(rèn)為 None。

  • 返回值:以元組形式返回所有子組中內(nèi)容。

錦囊1 獲取所有分組對(duì)應(yīng)的內(nèi)容

使用 Match.groups() 方法獲取所有分組對(duì)應(yīng)的內(nèi)容,代碼如下:

import re                                                             	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I) 			# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’                                   			# 要匹配的字符串
match=re.match(pattern,string)                      					# 匹配結(jié)果Match對(duì)象
print(match.groups())                             						# 打印所有分組對(duì)應(yīng)的內(nèi)容

43. Match.group()方法,返回一個(gè)或者多個(gè)匹配的子組

語(yǔ)法參考

Match.group() 方法用于獲取 Match 對(duì)象中一個(gè)或多個(gè)匹配的子組。如果只有一個(gè)(0~99)參數(shù),結(jié)果就是一個(gè)字符串;如果有多個(gè)參數(shù),結(jié)果就是一個(gè)元組(每個(gè)參數(shù)對(duì)應(yīng)一個(gè)項(xiàng));如果沒(méi)有參數(shù),組 1 默認(rèn)到 0(整個(gè)匹配都被返回)。如果一個(gè)組 N 參數(shù)值為 0,相應(yīng)的返回值就是整個(gè)匹配字符串;如果一個(gè)組號(hào)是負(fù)數(shù)或超出組的最大長(zhǎng)度,則給出越界錯(cuò)誤;如果正則表達(dá)式中的一個(gè)組匹配了多個(gè)值,則相應(yīng)的組只保存最后匹配的值。語(yǔ)法格式如下:

Match.group([group1, ...])

參數(shù)說(shuō)明:

  • group1 :表示分組對(duì)應(yīng)的編號(hào)或分組名稱。

  • 返回值:返回一個(gè)或者多個(gè)匹配的子組。

錦囊 獲取指定分組對(duì)應(yīng)的信息

使用 Match.group() 方法獲取指定分組對(duì)應(yīng)的信息,代碼如下:

import re                                                       	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I) 		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’                              			# 要匹配的字符串
match=re.match(pattern,string)                             			# 匹配結(jié)果Match對(duì)象

print(match.group())                                       			# 無(wú)參數(shù)打印全部?jī)?nèi)容
print(match.group(1))                                     			# 打印指定分組編號(hào)對(duì)應(yīng)內(nèi)容
print(match.group(‘group_2’))                           			# 打印指定分組名對(duì)應(yīng)內(nèi)容

44. Match.groupdict()方法,返回包含所有匹配值分組的字典

語(yǔ)法參考

Match.groupdict()方法用于獲取以字典形式返回包含所有匹配值分組的信息,其中key就是組名,value 就是分組匹配的信息內(nèi)容。語(yǔ)法格式如下:

Match.groupdict(default=None)

參數(shù)說(shuō)明:

  • default :用于不參與匹配的情況,默認(rèn)為 None。

  • 返回值:以字典形式返回包含所有匹配值分組的信息。

錦囊1 獲取字典形式的分組信息

使用 Match.groupdict() 方法獲取字典形式的分組信息,代碼如下:

import re                                                       	# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’                              			# 要匹配的字符串
match=re.match(pattern,string)                           			# 匹配結(jié)果Match對(duì)象
print(match.groupdict())                                   			# 打印字典形式的分組信息

45. Match.span()方法,返回包含開始和結(jié)束位置的二元組

語(yǔ)法參考

Match.span() 方法用于獲取指定分組匹配字符串的開始和結(jié)束位置。語(yǔ)法格式如下:

Match.span([group])

參數(shù)說(shuō)明:

  • group :表示分組名或者分組名對(duì)應(yīng)的編號(hào)。

  • 返回值:返回一個(gè)包含開始和結(jié)束位置的二元組。

錦囊1 獲取指定分組匹配字符串的開始和結(jié)束位置

使用 Match.span() 方法獲取指定分組匹配字符串的開始和結(jié)束位置,代碼如下:

import re                         									# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’ 											# 要匹配的字符串
match=re.match(pattern,string)										# 匹配結(jié)果Match對(duì)象
print(match.span(1))           										# 打印分組編號(hào)1匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.span(‘group_2’)) 										# 打印分組名group_2匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記

46. Match.start()方法,返回分組匹配字符串對(duì)應(yīng)的開始標(biāo)記

語(yǔ)法參考

Match.start() 方法用于獲取分組匹配字符串對(duì)應(yīng)的開始標(biāo)記。語(yǔ)法格式如下:

Match.start([group])

參數(shù)說(shuō)明:

  • group :表示分組名或者分組名對(duì)應(yīng)的編號(hào)。

  • 返回值:返回分組匹配字符串對(duì)應(yīng)的開始標(biāo)記。

錦囊1 獲取分組匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記

使用 Match.start() 方法與 Match.end() 方法獲取分組匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記,代碼如下:

import re                           								# 導(dǎo)入正則表達(dá)式re模塊

pattern = re.compile((?P<group_1>\w+) (?P<group_2>\w+),re.I)		# 分組表達(dá)式
string = ‘MR_SHOP mr_shop’ 											# 要匹配的字符串
match=re.match(pattern,string) 										# 匹配結(jié)果Match對(duì)象
print(match.start(),match.end())									# 打印全部分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(1),match.end(1))									# 打印編號(hào)1分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(2),match.end(2))									# 打印編號(hào)2分組的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記

# 打印分組名的匹配字符串對(duì)應(yīng)的開始、結(jié)束標(biāo)記
print(match.start(‘group_1’),match.end(‘group_2’))

到了這里,關(guān)于第二章 re模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【100天精通python】Day23:正則表達(dá)式,基本語(yǔ)法與re模塊詳解示例

    ? 目錄 ?專欄導(dǎo)讀? 1?正則表達(dá)式概述 2 正則表達(dá)式語(yǔ)法 2.1?正則表達(dá)式語(yǔ)法元素

    2024年02月14日
    瀏覽(50)
  • 【從零學(xué)習(xí)python 】63.正則表達(dá)式中的re.Match類及其屬性和方法介紹

    當(dāng)我們調(diào)用 re.match 方法、 re.search 方法,或者對(duì) re.finditer 方法的結(jié)果進(jìn)行迭代時(shí),拿到的數(shù)據(jù)類型都是 re.Match 對(duì)象。 這個(gè)類里定義了相關(guān)的屬性,可以直接讓我們來(lái)使用。 屬性和方法 說(shuō)明 pos 搜索的開始位置 endpos 搜索的結(jié)束位置 string 搜索的字符串 re 當(dāng)前使用的正則表達(dá)

    2024年02月11日
    瀏覽(41)
  • Python高級(jí)教程(1)——正則表達(dá)式(re.match、re.search、re.sub、compile、findall、finditer、split)、正則表達(dá)式對(duì)象、正則表達(dá)式實(shí)例

    Python高級(jí)教程(1)——正則表達(dá)式(re.match、re.search、re.sub、compile、findall、finditer、split)、正則表達(dá)式對(duì)象、正則表達(dá)式實(shí)例

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。 (1)re.match函數(shù) re.match 嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match() 就返回 none。 函數(shù)語(yǔ)法: 通過(guò)re.match匹配成功,可以使?group?法來(lái)提取數(shù)據(jù)

    2024年02月04日
    瀏覽(36)
  • re --- 正則表達(dá)式操作

    模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字節(jié)串 (bytes)。 但是,Unicode 字符串與 8 位字節(jié)串不能混用:也就是說(shuō),不能用字節(jié)串模式匹配 Unicode 字符串,反之亦然;同理,替換操作時(shí),替換字符串的類型也必須與所用的模式和搜索字符串的類型一致。

    2024年02月08日
    瀏覽(26)
  • 正則表達(dá)式 re庫(kù)的使用

    模式 描述 ^ 匹配 字符串的開始 w 匹配 字母數(shù)字及下劃線 W 匹配 非 字母數(shù)字及下劃線 s 匹配 任意空白字符,即空格 S 匹配 任意 非空 字符 d 匹配 任意數(shù)字,等價(jià)于[0-9], d+ 表示匹配多個(gè)數(shù)字 D 匹配 任意 非 數(shù)字 A 匹配字符串開始 Z 匹配字符串結(jié)束,如果是存在換行,

    2024年02月10日
    瀏覽(59)
  • 8.網(wǎng)絡(luò)爬蟲—正則表達(dá)式RE實(shí)戰(zhàn)

    8.網(wǎng)絡(luò)爬蟲—正則表達(dá)式RE實(shí)戰(zhàn)

    前言 : ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????:Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證 ??????此專欄文章是專門針對(duì)網(wǎng)絡(luò)爬蟲基礎(chǔ),歡迎免費(fèi)訂閱! ?????第一篇文章《1.認(rèn)識(shí)網(wǎng)絡(luò)爬蟲》獲得 全站熱榜第一 ,python 領(lǐng)域熱榜第一 , 第四篇文章《4.網(wǎng)絡(luò)爬蟲—

    2023年04月08日
    瀏覽(18)
  • Python 正則表達(dá)式RE知識(shí)學(xué)習(xí)

    正則表達(dá)式(Regular Expression)是一種強(qiáng)大的文本模式匹配工具,常用于在字符串中查找、替換、分割等操作。在 Python 中,可以使用內(nèi)置的 re 模塊來(lái)操作正則表達(dá)式。 字符匹配: 普通字符:正則表達(dá)式中的普通字符(如字母、數(shù)字、特殊字符)與字符串中的對(duì)應(yīng)字符進(jìn)行匹

    2024年02月09日
    瀏覽(98)
  • Python:正則表達(dá)式之re.group()用法

    Python正則表達(dá)式之re.group()用法學(xué)習(xí)筆記 正則表達(dá)式是在處理字符串時(shí)非常有用的工具,而re.group()是在匹配到的文本中提取特定分組內(nèi)容的方法之一。 在正則表達(dá)式中,通過(guò)圓括號(hào)可以創(chuàng)建一個(gè)或多個(gè)分組。re.group()用于獲取匹配到的文本中的指定分組內(nèi)容。 輸出結(jié)果: grou

    2024年01月17日
    瀏覽(16)
  • 006集 正則表達(dá)式 re 應(yīng)用實(shí)例—python基礎(chǔ)入門實(shí)例

    006集 正則表達(dá)式 re 應(yīng)用實(shí)例—python基礎(chǔ)入門實(shí)例

    正則表達(dá)式指預(yù)先定義好一個(gè) “ 字符串模板 ” ,通過(guò)這個(gè) “ 字符串模 板” 可以匹配、查找和替換那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模塊,主要是用來(lái)處理正則表達(dá)式,還可以利用 re 模塊通過(guò)正則表達(dá)式來(lái)進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)的爬取和存儲(chǔ)。 正則表達(dá)式的英文

    2024年02月01日
    瀏覽(31)
  • python re.findall和re.search同樣的正則表達(dá)式,為什么規(guī)則不一樣??

    今天遇到一個(gè)問(wèn)題,在使用python的re.findall和re.search的過(guò)程中,發(fā)現(xiàn)一個(gè)奇怪的事情,同樣的表達(dá)式,兩者的表現(xiàn)卻不一樣,例如下述代碼: res1是我所希望的結(jié)果,然后查了一段時(shí)間的原因,發(fā)現(xiàn)二者是在使用捕獲分組(xxx)和非捕獲分組(?:xxx)有區(qū)別,re.search使用的是非捕獲方

    2024年02月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包