Python語(yǔ)言正則表達(dá)式課件_第1頁(yè)
Python語(yǔ)言正則表達(dá)式課件_第2頁(yè)
Python語(yǔ)言正則表達(dá)式課件_第3頁(yè)
Python語(yǔ)言正則表達(dá)式課件_第4頁(yè)
Python語(yǔ)言正則表達(dá)式課件_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第五章字符串與正則表達(dá)式5.1字符串基礎(chǔ)5.2字符串方法5.3正則表達(dá)式習(xí)題5.4實(shí)驗(yàn)5.5小結(jié)字符串常用的表示方式1、字符串中的字符可以是ASCII字符也可以是其他各種符號(hào)。2、它常用英文狀態(tài)下的單引號(hào)(’’)、雙引號(hào)(””)或者三單引號(hào)(’’’’’’)、三雙引號(hào)(””””””)進(jìn)行表示。5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式轉(zhuǎn)義字符字符串中還有一種特殊的字符叫做轉(zhuǎn)義字符,轉(zhuǎn)義字符通常用于不能夠直接輸入的各種特殊字符。Python常用轉(zhuǎn)義字符如表5.1所示:5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式轉(zhuǎn)義字符說(shuō)明\\反斜線\’單引號(hào)\’’雙引號(hào)\a響鈴符\b退格符\f換頁(yè)符\n換行符\r回車符\t水平制表符\v垂直制表符\0Null,空字符串\000以八進(jìn)制表示的ASCII碼對(duì)應(yīng)符\xhh以十六進(jìn)制表示的ASCII碼對(duì)應(yīng)符表5.1用的轉(zhuǎn)義字符字符串的基礎(chǔ)操作包括。求字符串的長(zhǎng)度、字符串的連接、字符串的遍歷、字符串的包含判斷、字符串的索引和切片等。第五章字符串與正則表達(dá)式1、求字符串的長(zhǎng)度字符串的長(zhǎng)度是指字符數(shù)組的長(zhǎng)度,又可以理解為字符串中的字符個(gè)數(shù)(空格也算字符),可以用len()函數(shù)查看字符串的長(zhǎng)度。如:>>>sample_str1='JacklovesPython'>>>print(len(sample_str1))#查看字符串長(zhǎng)度運(yùn)行結(jié)果如下:175.1字符串基礎(chǔ)2、字符串的連接第五章字符串與正則表達(dá)式字符串的連接是指將多個(gè)字符串連接在一起組成一個(gè)新的字符串。例如:>>>sample_str2='Jack','is','a','Python','fan'#字符串用逗號(hào)隔開(kāi),組成元組>>>print('sample_str2:',sample_str2,type(sample_str2))運(yùn)行結(jié)果如下:sample_str2:('Jack','is','a','Python','fan')<class'tuple'>當(dāng)字符串之間沒(méi)有任何連接符時(shí),這些字符串會(huì)直接連接在一起,組成新的字符串。>>>sample_str3='Jack''is''a''Python''fan'#字符串間無(wú)連接符,默認(rèn)合并>>>print('sample_str3:',sample_str3)運(yùn)行結(jié)果如下:sample_str3:JackisaPythonfan5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式字符串之間用’+’號(hào)連接時(shí),也會(huì)出現(xiàn)同樣的效果,這些字符串將連接在一起,組成一個(gè)新的字符串。>>>sample_str4='Jack'+'is'+'a'+'Python'+'fan'#字符串’+’連接,默認(rèn)合并>>>print('sample_str4:',sample_str4)運(yùn)行結(jié)果如下:sample_str4:JackisaPythonfan

用字符串與正整數(shù)進(jìn)行乘法運(yùn)算時(shí),相當(dāng)于創(chuàng)建對(duì)應(yīng)次數(shù)的字符串,最后組成一個(gè)新的字符串。>>>sample_str5='Jack'*3#重復(fù)創(chuàng)建相應(yīng)的字符串>>>print('sample_str5:',sample_str5)運(yùn)行結(jié)果如下:sample_str5:JackJackJack注意:字符串直接以空格隔開(kāi)的時(shí)候,該字符串會(huì)組成元組類型。

5.1字符串基礎(chǔ)3、字符串的遍歷第五章字符串與正則表達(dá)式通常使用for循環(huán)對(duì)字符串進(jìn)行遍歷。例如:>>>sample_str6='Python'#遍歷字符串>>>forainsample_str6:print(a)運(yùn)行結(jié)果如下:Python其中變量a,每次循環(huán)按順序代指字符串里面的一個(gè)字符。5.1字符串基礎(chǔ)4、字符串的包含判斷第五章字符串與正則表達(dá)式字符串是字符的有序集合,因此用in操作來(lái)判斷指定的字符是否存在包含關(guān)系。如:>>>sample_str7='Python'>>>print('a'insample_str7)#字符串中不存在包含關(guān)系>>>print('Py'insample_str7)#字符串中存在包含關(guān)系運(yùn)行結(jié)果如下:FalseTrue5.1字符串基礎(chǔ)5、索引和切片第五章字符串與正則表達(dá)式字符串是一個(gè)有序集合,因此可以通過(guò)偏移量實(shí)現(xiàn)索引和切片的操作。在字符串中字符從左到右的字符索引依次為0,1,2,3,。。。,len()-1,字符從右到左的索引依次為-1,-2,-3,。。。,-len()。索引其實(shí)簡(jiǎn)單來(lái)說(shuō)是指字符串的排列順序,可以通過(guò)索引來(lái)查找該順序上的字符。例如:>>>sample_str8='Python'>>>print(sample_str8[0])#字符串對(duì)應(yīng)的第一個(gè)字符>>>print(sample_str8[1])#字符串對(duì)應(yīng)的第二個(gè)字符>>>print(sample_str8[-1])#字符串對(duì)應(yīng)的最后一個(gè)字符>>>print(sample_str8[-2])#字符串對(duì)應(yīng)的倒數(shù)第二個(gè)字符運(yùn)行結(jié)果如下:Pyno5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式注意:雖然索引可以獲得該順序上的字符,但是不能夠通過(guò)該索引去修改對(duì)應(yīng)的字符。例如:>>>sample_str8[0]='b'#修改字符串的第一個(gè)字符Traceback(mostrecentcalllast):#系統(tǒng)正常報(bào)錯(cuò)File"<pyshell#4>",line9,in<module>sample_str8[0]='b'TypeError:'str'objectdoesnotsupportitemassignment切片,也叫分片,和元組與列表相似,是指從某一個(gè)索引范圍中獲取連續(xù)的多個(gè)字符(又稱為子字符)。常用格式如下:stringname[start:end]這里的stringname是指被切片的字符串,start和end分別指開(kāi)始和結(jié)束時(shí)字符的索引,其中切片的最后一個(gè)字符的索引是end-1,這里有一個(gè)訣竅叫:包左不包右。例如:>>>sample_str9='abcdefghijkl'>>>print(sample_str9[0:4])#獲取索引為0-4之間的字符串,從索引0開(kāi)始到3為止,不包括索引為4的字符運(yùn)行結(jié)果如下:abcd5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式若不指定起始切片的索引位置,默認(rèn)是從0開(kāi)始;若不指定結(jié)束切片的順序,默認(rèn)是字符串的長(zhǎng)度-1。例如:>>>sample_str10='abcdefg'>>>print("起始不指定",sample_str10[:3])#獲取索引為0-3之間的字符串,不包括3>>>print("結(jié)束不指定",sample_str10[3:])#從索引3到最后一個(gè)字符,不包括len運(yùn)行結(jié)果如下:起始不指定abc結(jié)束不指定defg默認(rèn)切片的字符串是連續(xù)的,但是也可以通過(guò)指定步進(jìn)數(shù)(step)來(lái)跳過(guò)中間的字符,其中默認(rèn)的step是1。例如指定步進(jìn)數(shù)為2:>>>sample_str11='012345678'>>>print('跳2個(gè)字符',sample_str11[1:7:2])#索引1~7,每2個(gè)字符截取運(yùn)行結(jié)果如下:跳2個(gè)字符1355.1字符串基礎(chǔ)字符串格式化方法第五章字符串與正則表達(dá)式想要進(jìn)行字符串格式化可以使用format()方法。例如:>>>print('Mynameis{0},andIam{1}'.format('Jack',9))#函數(shù)格式化運(yùn)行結(jié)果如下:MynameisJack,andIam95.1字符串基礎(chǔ)字符串常見(jiàn)的格式化符號(hào)如表5.2第五章字符串與正則表達(dá)式格式控制符說(shuō)明%s字符串(采用str()的顯示)或其他任何對(duì)象%r與%s相似(采用repr()的顯示)%c單個(gè)字符%b參數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)%d參數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù)%i參數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù)%o參數(shù)轉(zhuǎn)換成八進(jìn)制整數(shù)%u參數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù)%x參數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù),字母小寫%X參數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù),字母大寫%e.E按科學(xué)計(jì)數(shù)法格式轉(zhuǎn)換成浮點(diǎn)數(shù)%f.F按定點(diǎn)小數(shù)格式轉(zhuǎn)換成浮點(diǎn)數(shù)%g.G按定點(diǎn)小數(shù)格式轉(zhuǎn)換成浮點(diǎn)數(shù),與%f.F不同表5.2Python格式控制符號(hào)5.1字符串基礎(chǔ)字符串的格式化通常有兩種方式,除了之前提到的用函數(shù)的形式進(jìn)行格式化以外,還可以用字符串格式化表達(dá)式來(lái)進(jìn)行格式,常用%進(jìn)行表示,其中%前面是需要格式化的字符串,而%后面就是需要填充的實(shí)際參數(shù),這個(gè)實(shí)際參數(shù)其本質(zhì)就是元組。%也可以理解為占位符。例如:第五章字符串與正則表達(dá)式>>>print('Mynameis%s,andIam%d'%('Jack',9))#表達(dá)式格式化運(yùn)行結(jié)果如下:MynameisJack,andIam9注意:如果想要將后面填充的浮點(diǎn)數(shù)保留兩位小數(shù),可以用%f2表示,同時(shí)會(huì)對(duì)第三位小數(shù)進(jìn)行四舍五入。例如:>>>print('你花了%.2f元錢'%(20.45978))#浮點(diǎn)數(shù)保留兩個(gè)小數(shù)運(yùn)行結(jié)果如下:你花了20.46元錢5.1字符串基礎(chǔ)字符串的格式化通常有兩種方式,除了之前提到的用函數(shù)的形式進(jìn)行格式化以外,還可以用字符串格式化表達(dá)式來(lái)進(jìn)行格式,常用%進(jìn)行表示,其中%前面是需要格式化的字符串,而%后面就是需要填充的實(shí)際參數(shù),這個(gè)實(shí)際參數(shù)其本質(zhì)就是元組。%也可以理解為占位符。例如:第五章字符串與正則表達(dá)式>>>print('Mynameis%s,andIam%d'%('Jack',9))#表達(dá)式格式化運(yùn)行結(jié)果如下:MynameisJack,andIam9注意:如果想要將后面填充的浮點(diǎn)數(shù)保留兩位小數(shù),可以用%f2表示,同時(shí)會(huì)對(duì)第三位小數(shù)進(jìn)行四舍五入。例如:>>>print('你花了%.2f元錢'%(20.45978))#浮點(diǎn)數(shù)保留兩個(gè)小數(shù)運(yùn)行結(jié)果如下:你花了20.46元錢5.1字符串基礎(chǔ)第五章字符串與正則表達(dá)式5.1字符串基礎(chǔ)5.2字符串方法5.3正則表達(dá)式習(xí)題5.4實(shí)驗(yàn)5.5小結(jié)字符串是str類型對(duì)象,所以Python內(nèi)置了一系列操作字符串的方法。其中常用的方法如下:1.str.strip([chars])

若方法里面的chars不指定默認(rèn)去掉字符串的首、尾空格或者換行符,但是如果指定了chars,那么會(huì)刪除首尾的chars例如:>>>sample_fun1='Helloworld^#'>>>print(sample_fun1.strip())#默認(rèn)去掉首尾空格>>>print(sample_fun1.strip('#'))#指定首尾需要?jiǎng)h除的字符>>>print(sample_fun1.strip('^#'))運(yùn)行結(jié)果如下:Helloworld^#Helloworld^Helloworld

5.2字符串方法第五章字符串與正則表達(dá)式2.str.count('chars',start,end)統(tǒng)計(jì)chars字符串或者字符在str中出現(xiàn)的次數(shù),從start順序開(kāi)始查找一直到end順序范圍結(jié)束,默認(rèn)是從順序0開(kāi)始。例如:>>>sample_fun2='abcdabfabbcd'>>>print(sample_fun2.count('ab',2,9))#統(tǒng)計(jì)字符串出現(xiàn)的次數(shù)運(yùn)行結(jié)果如下:25.2字符串方法第五章字符串與正則表達(dá)式3.str.capitalize()將字符串的首字母大寫。例如:>>>sample_fun3='abc'>>>print(sample_fun3.capitalize())#首字母大寫運(yùn)行結(jié)果如下:Abc4.str.replace(oldstr,newstr,count)用舊的子字符串替換新的子字符串,若不指定count默認(rèn)全部替換。例如:>>>sample_fun4='ab12cd3412cd'>>>print(sample_fun4.replace('12','21'))#不指定替換次數(shù)count>>>print(sample_fun4.replace('12','21',1))#指定替換次數(shù)count運(yùn)行結(jié)果如下:ab21cd3421cdab21cd3412cd5.2字符串方法第五章字符串與正則表達(dá)式5.str.find('str',start,end)

查找并返回子字符在start到end范圍內(nèi)的順序,默認(rèn)范圍是從父字符串的頭開(kāi)始到尾結(jié)束,例如:>>>sample_fun5='0123156'>>>print(sample_fun5.find('5'))#查看子字符串的順序>>>print(sample_fun5.find('5',1,4))#指定范圍內(nèi)沒(méi)有該字符串默認(rèn)返回-1>>>print(sample_fun5.find('1')#多個(gè)字符串返回第一次出現(xiàn)時(shí)候的順序運(yùn)行結(jié)果如下:5-115.2字符串方法第五章字符串與正則表達(dá)式6.str.index('str',start,end)

該函數(shù)與find函數(shù)一樣,但是如果在某一個(gè)范圍內(nèi)沒(méi)有找到該字符串的時(shí)候,不再返回-1而是直接報(bào)錯(cuò)。例如:>>>sample_fun6='0123156'>>>print(sample_fun6.index(7))#指定范圍內(nèi)沒(méi)有找到該字符串會(huì)報(bào)錯(cuò)運(yùn)行結(jié)果如下:Traceback(mostrecentcalllast):File"D:/python/space/demo05-02-03.py",line2,in<module>print(sample_fun6.index(7))#指定范圍內(nèi)沒(méi)有找到該字符串會(huì)報(bào)錯(cuò)TypeError:mustbestr,notint5.2字符串方法第五章字符串與正則表達(dá)式7.str.isalnum()

字符串是由字母或數(shù)字組成則返回true否則返回false。例如:>>>sample_fun7='abc123'#字符串由字母和數(shù)字組成>>>sample_fun8='abc'#字符串由字母組成>>>sample_fun9='123'#字符串由數(shù)字組成>>>sample_fun10='abc12%'#字符串由除了數(shù)字字母以為的字符組成print(sample_fun7.isalnum())print(sample_fun8.isalnum())print(sample_fun9.isalnum())print(sample_fun10.isalnum())運(yùn)行結(jié)果如下:TrueTrueTrueFalse5.2字符串方法第五章字符串與正則表達(dá)式8.str.isalpha()字符串是否全是由字母組成的,是返回true,否則返回false。例如>>>sample_fun11='abc123'#字符串中不只是有字母>>>sample_fun12='abc'#字符串中只是有字母print(sample_fun11.isalpha())print(sample_fun12.isalpha())運(yùn)行結(jié)果如下:FalseTrue5.2字符串方法第五章字符串與正則表達(dá)式9.str.isdigit()

字符串是否全是由數(shù)字組成,是則返回true,否則返回false。例如:>>>sample_fun13='abc12'#字符串中不只是有數(shù)字>>>sample_fun14='12'#字符串中只是有數(shù)字print(sample_fun13.isdigit())print(sample_fun14.isdigit())運(yùn)行結(jié)果如下:FalseTrue5.2字符串方法第五章字符串與正則表達(dá)式10.str.isspace()字符串是否全是由空格組成的,是則返回true,否則返回false。例如:>>>sample_fun15='abc'#字符串中不只有空格>>>sample_fun16=''#字符串中只有空格>>>print(sample_fun15.isspace())>>>print(sample_fun16.isspace())運(yùn)行結(jié)果如下:FalseTrue5.2字符串方法第五章字符串與正則表達(dá)式11.str.islower()字符串是否全是小寫,是則返回true,否則返回false。例如:>>>sample_fun17='abc'#字符串中的字母全是小寫>>>sample_fun18='Abcd'#字符串中的字母不只有小寫>>>print(sample_fun17.islower())>>>print(sample_fun18.islower())運(yùn)行結(jié)果如下:TrueFalse5.2字符串方法第五章字符串與正則表達(dá)式12.str.isupper()

字符串是否全是大寫,是則返回true,否則返回false。例如:>>>sample_fun19='abCa'#字符串中的字母不全是大寫字母>>>sample_fun20='ABCA'#字符串中的字母全是大寫字母>>>print(sample_fun19.isupper())>>>print(sample_fun20.isupper())運(yùn)行結(jié)果如下:FalseTrue5.2字符串方法第五章字符串與正則表達(dá)式13.str.istitle()字符串首字母是否是大寫,是則返回true,否則返回false。例如:>>>sample_fun21='Abc'#字符串首字母大寫>>>sample_fun22='aAbc'#字符串首字母不是大寫>>>print(sample_fun21s.istitle())>>>print(sample_fun22.istitle())運(yùn)行結(jié)果如下:TrueFalse5.2字符串方法第五章字符串與正則表達(dá)式14.str.low()將字符串中的字母全部轉(zhuǎn)換成小寫字母。例如:>>>sample_fun23='aAbB'#將字符串中的字母全部轉(zhuǎn)為小寫字母>>>print(sample_fun23.lower())運(yùn)行結(jié)果如下:aabb

15.str.upper()將字符串中的字母全部轉(zhuǎn)換成大寫字母。例如:>>>sample_fun24='abcD'#將字符串中的字母全部轉(zhuǎn)為>>>print(sample_fun24.upper())運(yùn)行結(jié)果如下:ABCD5.2字符串方法第五章字符串與正則表達(dá)式16.str.split(sep,maxsplit)將字符串按照指定的sep字符進(jìn)行分割,maxsplit是指定需要分割的次數(shù),若不指定sep默認(rèn)是分割空格。例如:>>>sample_fun25='abacdaef'>>>print(sample_fun25.split('a'))#指定分割字符串>>>print(sample_fun25.split())#不指定分割字符串>>>print(sample_fun25.split('a',1))#指定分割次數(shù)運(yùn)行結(jié)果如下:['','b','cd','ef']['abacdaef']['','bacdaef']5.2字符串方法第五章字符串與正則表達(dá)式17.str.startswith(sub[,start[,end]])

判斷字符串在指定范圍內(nèi)是否以sub開(kāi)頭,默認(rèn)范圍是整個(gè)字符串。例如:>>>sample_fun26='12abcdef'>>>print(sample_fun26.startswith('12',0,5))#范圍內(nèi)是否是以該字符開(kāi)頭運(yùn)行結(jié)果如下:True

18.str.endswith(sub[,start[,end]])

判斷字符串在指定范圍內(nèi)是否是以sub結(jié)尾,默認(rèn)范圍是整個(gè)字符串。例如:>>>sample_fun27='abcdef12'>>>print(sample_fun27.endswith('12'))#指定范圍內(nèi)是否是以該字符結(jié)尾運(yùn)行結(jié)果如下:True5.2字符串方法第五章字符串與正則表達(dá)式19.str.partition(sep)將字符串從sep第一次出現(xiàn)的位置開(kāi)始分隔成三部分:sep順序前、sep、sep順序后。最后會(huì)返回出一個(gè)三元數(shù)組,如果沒(méi)有找到sep的時(shí)候,返回字符本身和兩個(gè)空格組成的三元數(shù)組。例如:>>>sample_fun28='123456'>>>print(sample_fun28.partition('34'))#指定字符分割,能夠找到該字符>>>print(sample_fun28.partition('78'))#指定字符分割,不能夠找到該字符運(yùn)行結(jié)果如下:('12','34','56')('123456','','')5.2字符串方法第五章字符串與正則表達(dá)式20.str.rpartition(sep)該函數(shù)與partition(sep)函數(shù)一致,但是sep不再是第一次出現(xiàn)的順序,而是最后一次出現(xiàn)的順序。例如:>>>sample_fun29='12345634'>>>print(sample_fun29.rpartition('34'))#指定字符最后一次的位置進(jìn)行分割運(yùn)行結(jié)果如下:('123456','34','')5.2字符串方法第五章字符串與正則表達(dá)式第五章字符串與正則表達(dá)式5.1字符串基礎(chǔ)5.2字符串方法5.3正則表達(dá)式習(xí)題5.4實(shí)驗(yàn)5.5小結(jié)5.3.1認(rèn)識(shí)正則表達(dá)式正則表達(dá)式(RegularExpression),此處的“Regular”即是“規(guī)則”、“規(guī)律”的意思,RegularExpression即“描述某種規(guī)則的表達(dá)式”,因此它又可稱為正規(guī)表示式、正規(guī)表示法、正規(guī)表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法等,在代碼中常常被簡(jiǎn)寫為regex、regexp或RE。正則表達(dá)式使用某些單個(gè)字符串,來(lái)描述或匹配某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索或替換那些符合某個(gè)模式的文本,如下面的表5.3、5.4、5.5、5.6所示。5.3正則表達(dá)式第五章字符串與正則表達(dá)式字符說(shuō)明.匹配任意1個(gè)字符(除了\n)[]匹配[]中列舉的字符\d\d匹配數(shù)字,即0-9\D匹配非數(shù)字,即不是數(shù)字\s匹配空白,即空格,Tab鍵\S匹配非空白\w匹配單詞字符,即a-z.A-Z.0-9._\W匹配非單詞字符表5.3單個(gè)字符匹配5.3.1認(rèn)識(shí)正則表達(dá)式5.3正則表達(dá)式第五章字符串與正則表達(dá)式字符說(shuō)明*匹配前?個(gè)字符出現(xiàn)0次或者無(wú)限次,即可有可無(wú)+匹配前?個(gè)字符出現(xiàn)1次或者無(wú)限次,即至少有1次?匹配前?個(gè)字符出現(xiàn)1次或者0次,即要么有1次,要么沒(méi)有{m}匹配前?個(gè)字符出現(xiàn)m次{m,}匹配前?個(gè)字符至少出現(xiàn)m次{m,n}匹配前?個(gè)字符出現(xiàn)從m到n次字符說(shuō)明^匹配字符串開(kāi)頭$匹配字符串結(jié)尾\b匹配?個(gè)單詞的邊界\B匹配非單詞邊界表5.4表示數(shù)量的匹配表5.5表示邊界的匹配5.3.1認(rèn)識(shí)正則表達(dá)式5.3正則表達(dá)式第五章字符串與正則表達(dá)式字符說(shuō)明|匹配左右任意?個(gè)表達(dá)式(ab)將括號(hào)中字符作為?個(gè)分組\num引用分組num匹配到的字符串(?P<name>)分組起別名(?P=name)引用別名為name分組匹配到的字符串表5.6匹配分組5.3.2re模塊在Python中需要通過(guò)正則表達(dá)式對(duì)字符串進(jìn)行匹配的時(shí)候,可以導(dǎo)入?個(gè)庫(kù)(模塊),名字為re,它提供了對(duì)正則表達(dá)式操作所需的方法,如表5.7。5.3正則表達(dá)式第五章字符串與正則表達(dá)式方法說(shuō)明re.match(pattern,stringflags)從字符串的開(kāi)始匹配一個(gè)匹配對(duì)象,例如匹配第一個(gè)單詞re.search(pattern,stringflags)在字符串中查找匹配的對(duì)象,找到第一個(gè)后就返回,如果沒(méi)有找到就返回Nonere.sub(pattern,repl,stringcount)替換掉字符中的匹配項(xiàng)re.split(r',',text)分割字符re.findall(pattern,stringflags)獲取字符串中所有匹配的對(duì)象pile(pattern,flags)創(chuàng)建模式對(duì)象表5.7re模塊常見(jiàn)的方法5.3.3re.match()方法re.match()是用來(lái)進(jìn)行正則匹配檢查的方法,若字符串匹配正則表達(dá)式,則match()方法返回匹配對(duì)象(MatchObject),否則返回None(注意不是空字符串"")。匹配對(duì)象MacthObject具有g(shù)roup()方法,用來(lái)返回字符串的匹配部分。常用格式為:re.match(pattern,string,flags=0)這里的pattern格式為('正則表達(dá)式','匹配的字符串')例如:>>>importre#導(dǎo)入re包>>>sample_result1=re.match('Python','Python12')#從頭查找匹配字符串>>>print(sample_result1.group())#輸出匹配的字符串運(yùn)行結(jié)果如下:Python5.3正則表達(dá)式第五章字符串與正則表達(dá)式5.3.4re.search()方法re.search()方法和re.match()方法相似,也是用來(lái)對(duì)正則匹配檢查的方法但不同的是search()方法是在字符串的頭開(kāi)始一直到尾進(jìn)行查找,若正則表達(dá)式與字符串匹配成功,那么就返回匹配對(duì)象,否則返回None。例如:>>>importre>>>sample_result2=re.search('Python','354Python12')#依次匹配字符串>>>print(sample_result2.group())運(yùn)行結(jié)果如下:Python5.3正則表達(dá)式第五章字符串與正則表達(dá)式雖然re.match()和re.search()方法都是指定的正則表達(dá)式與字符串進(jìn)行匹配,但是re.match()是從字符串的開(kāi)始位置進(jìn)行匹配,若匹配成功,則返回匹配對(duì)象,否則返回None。而re.search()方法卻是從字符串的全局進(jìn)行掃描,若匹配成功就返回匹配對(duì)象,否則返回None。例如:>>>importre>>>sample_result3=re.match('abc','abcdef1234')#match只能夠匹配頭>>>sample_result4=re.match('1234','abcdef1234')>>>print(sample_result3.group())>>>print(sample_result4)5.3正則表達(dá)式第五章字符串與正則表達(dá)式5.3.4re.search()方法與re.match()方法的區(qū)別>>>sample_result5=re.search('abc','abcdef1234')#search匹配全體字符>>>sample_result6=re.search('1234','abcdef1234')>>>print(sample_result5.group())>>>print(sample_result6.group())運(yùn)行結(jié)果如下:abcNoneabc12345.3正則表達(dá)式第五章字符串與正則表達(dá)式5.3.4re.search()方法與re.match()方法的區(qū)別第五章字符串與正則表達(dá)式5.1字符串基礎(chǔ)5.2字符串方法5.3正則表達(dá)式習(xí)題5.4實(shí)驗(yàn)5.5小結(jié)1.我們??吹阶约弘娔X上的文件路徑如'C:\Windows\Logs\dosvc',請(qǐng)將該路徑分割為不同的文件夾。>>>sample_str1='C:\Windows\Logs\dosvc'>>>sample_slipstr=sample_str1.split('\\')#\轉(zhuǎn)義字符要轉(zhuǎn)一次才是本意>>>print(sample_slipstr)運(yùn)行結(jié)果如下:['C:','Windows','Logs','dosvc']2.Python的官網(wǎng)是判斷該網(wǎng)址是否是以org結(jié)尾。>>>sample_str2=''>>>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論