




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
re模塊1re模塊常用函數(shù)目錄認(rèn)識re模塊2正則表達(dá)式語法3【任務(wù)8-4】匹配字符串信息4Python中的re模塊提供了與Perl語言類似的正則表達(dá)式匹配操作。re模塊將正則表達(dá)式編譯成模式對象,然后通過模式對象執(zhí)行模式匹配搜索、字符串分割、字符串替換等操作。re模塊使Python擁有了全部的正則表達(dá)式功能。正則表達(dá)式是對字符串進(jìn)行操作的一種邏輯公式。通過正則表達(dá)式,程序開發(fā)人員可以對指定的文本實現(xiàn)匹配測試、內(nèi)容查找、內(nèi)容替換、字符串分割等。正則表達(dá)式的設(shè)計思想是使用一種描述性的語言給字符串定義一個規(guī)則,凡是符合規(guī)則的字符串即可匹配成功,否則匹配不成功。認(rèn)識re模塊re模塊的相關(guān)函數(shù)及作用說明如下表。認(rèn)識re模塊函數(shù)名稱函數(shù)作用re.findall匹配字符串中的全部樣式,返回組合列表re.search匹配符合樣式的第一個位置,返回包含匹配信息的對象re.split按匹配樣式分割字符串,返回列表re.sub替換匹配樣式的文本,返回字符串re.match匹配0個到多個樣式,返回包含匹配信息的對象re.fullmatch匹配整個字符串,返回包含匹配信息的對象re.finditer匹配字符串中的全部樣式,返回迭代器保存的匹配對象re.subn替換匹配樣式的文本,返回元組re.escape轉(zhuǎn)義樣式中的特殊字符re.purge清除正則表達(dá)式的緩存1re模塊常用函數(shù)目錄認(rèn)識re模塊2正則表達(dá)式語法3【任務(wù)8-4】匹配字符串信息4findall函數(shù)返回的是正則表達(dá)式在字符串中所有匹配結(jié)果的列表。findall函數(shù)的語法格式如下。re.findall(pattern,string,flags=0)findall函數(shù)的參數(shù)及其說明如下表。1.findall函數(shù)參數(shù)名稱參數(shù)說明pattern匹配的正則表達(dá)式樣式,無默認(rèn)值,類型為字符串型string需要匹配的字符串,無默認(rèn)值,類型為字符串型flags編譯標(biāo)志,用來修改正則表達(dá)式的匹配方法,默認(rèn)值為0,類型為整型或函數(shù)如果正則表達(dá)式與字符串匹配成功,那么將會以列表的形式返回字符串中所有與pattern相匹配的字符串。如果匹配失敗,那么將會返回一個空列表。示例如下。>>>importre>>>text1='正則表達(dá)式一般由一些普通字符和一些元字符組成。'+\...'正則表達(dá)式是一種可以用于模式匹配和替換的工具'>>>print(re.findall('正則表達(dá)式',text1))#返回一個列表['正則表達(dá)式','正則表達(dá)式'1.findall函數(shù)search函數(shù)在整個字符串內(nèi)對正則表達(dá)式進(jìn)行匹配,找到第一個匹配對象后返回一個包含匹配信息的對象。語法格式如下。re.search(pattern,string,flags=0)search函數(shù)的參數(shù)說明和findall函數(shù)的參數(shù)說明相同,如果字符串中沒有能夠匹配的對象,那么返回None。與findall函數(shù)不同的是,search函數(shù)并不要求從字符串的開頭進(jìn)行匹配,即正則表達(dá)式可以是字符串的一部分。使用search函數(shù)匹配“正則表達(dá)式”的示例如下。>>>print(re.search('正則表達(dá)式',text1))#返回一個匹配對象<re.Matchobject;span=(0,5),match='正則表達(dá)式'>2.search函數(shù)split函數(shù)能夠按照匹配的正則表達(dá)式將字符串進(jìn)行分割,并返回分割后的字符串列表。語法格式如下。re.split(pattern,string,maxsplit=0,flags=0)在split函數(shù)中,pattern、string和flags的參數(shù)說明與findall函數(shù)的參數(shù)說明相同。相比于findall函數(shù),split函數(shù)多了一個maxsplit參數(shù),該參數(shù)接收整型數(shù)據(jù),表示最大分割次數(shù)。3.split函數(shù)如果不指定maxsplit參數(shù),那么字符串將被全部分割,該參數(shù)默認(rèn)為0。如果沒有可匹配的項,那么將會返回原來的字符串。使用split函數(shù)按“?!狈指钗谋镜氖纠缦?。>>>p_string=text1.split('。')#按“?!边M(jìn)行分割>>>print(p_string)['正則表達(dá)式一般由一些普通字符和一些元字符組成','正則表達(dá)式是一種可以用于模式匹配和替換的工具']3.split函數(shù)如果sub函數(shù)能夠找到所有匹配正則表達(dá)式的字符串并用指定的字符串進(jìn)行替換。sub函數(shù)的語法格式如下。re.sub(pattern,repl,string,count=0,flags=0)如果字符串string中的內(nèi)容匹配了正則表達(dá)式,那么會將匹配到的字符串替換成repl。sub函數(shù)的參數(shù)如下。4.sub函數(shù)參數(shù)名稱參數(shù)說明pattern匹配的正則表達(dá)式樣式,無默認(rèn)值,類型為字符串型repl接收類型為字符串型或函數(shù),若為字符串型,則表示反斜線轉(zhuǎn)義序列被處理;若為函數(shù),則對每個非重復(fù)的pattern的情況進(jìn)行調(diào)用,無默認(rèn)值string需要匹配的字符串,無默認(rèn)值,類型為字符串型count要替換的最大次數(shù),默認(rèn)值為0,類型為整型flags編譯標(biāo)志,用來修改正則表達(dá)式的匹配方法,默認(rèn)值為0,類型為整型或函數(shù)使用sub函數(shù)替換指定文本的示例如下。4.sub函數(shù)>>>print(re.sub('正則表達(dá)式','123',text1))#文本替換123一般由一些普通字符和一些元字符組成。123是一種可以用于模式匹配和替換的工具1re模塊常用函數(shù)目錄認(rèn)識re模塊2正則表達(dá)式語法3【任務(wù)8-4】匹配字符串信息4正則表達(dá)式通常由一些普通字符和一些元字符組成。普通字符常為大小寫字母、數(shù)字和中文字符,元字符是具有特殊含義的字符。在之前示例中使用的正則表達(dá)式由普通字符組成,因此本小節(jié)主要介紹元字符的應(yīng)用。元字符的應(yīng)用是使得正則表達(dá)式強大的原因之一。元字符由特殊符號組成,定義了字符集合、子組匹配、模式重復(fù)次數(shù)。元字符通過轉(zhuǎn)義字符和其他符號的組合進(jìn)行字符匹配,使得正則表達(dá)式不僅可以匹配單個字符串,而且可以匹配字符串集合。正則表達(dá)式語法英文句號(.)表示匹配除換行符“\n”之外的任意一個字符。使用英文句號進(jìn)行匹配的示例如下。>>>print(re.findall('正.表達(dá)式',text1))['正則表達(dá)式','正則表達(dá)式']1.字符匹配(1)英文句號方括號([])表示匹配多個字符,在方括號內(nèi)部的所有字符都會被匹配。使用方括號進(jìn)行匹配的示例如下。>>>print(re.findall('一[般些]',text1))#匹配方括號內(nèi)的任意一個字符['一般','一些','一些']1.字符匹配(2)方括號豎線(|)用于對左右兩個正則表達(dá)式進(jìn)行匹配。A和B可以是任意正則表達(dá)式,掃描目標(biāo)字符串時,由“|”分隔開的正則表達(dá)式樣式從左到右進(jìn)行匹配。當(dāng)一個樣式完全匹配時,這個分支就被接受。也就是說,一旦A匹配成功,B就不再進(jìn)行匹配。使用豎線進(jìn)行匹配的示例如下。>>>print(re.findall('正則表|正則表達(dá)式',text1))#使用豎線進(jìn)行匹配['正則表','正則表']1.字符匹配(3)豎線乘方符號(^)表示匹配字符串起始位置的內(nèi)容,如“^正則”表示匹配所有以“正則”開頭的字符串。示例如下。>>>forlineinp_string:...iflen(re.findall('^正則',line)):...print(line)正則表達(dá)式一般由一些普通字符和一些元字符組成正則表達(dá)式是一種可以用于模式匹配和替換的工具1.字符匹配(4)乘方符號貨幣符號($)表示匹配字符串結(jié)束位置的內(nèi)容,如“組成$”表示匹配所有以“組成”結(jié)尾的字符串。示例如下。>>>forlineinp_string:...iflen(re.findall('組成$',line)):...print(line)正則表達(dá)式一般由一些普通字符和一些元字符組成1.字符匹配(5)貨幣符號常見的量化符號有“?”“*”“+”“{n}”“{n,}”“{m,n}”。英文句號、方括號、豎線、乘方符號和貨幣符號在面對重復(fù)出現(xiàn)的字符時會顯得力不從心,而量化符號的使用使得正則表達(dá)式更為簡潔,如“12333333”可以使用“123+”進(jìn)行匹配。如下表1.字符匹配(6)量化符號量化符號說
明?表示符號前的元素可選,并且最多匹配1次*表示符號前的元素會被匹配0次或多次+表示符號前的元素會被匹配1次或多次{n}表示符號前的元素會正好被匹配n次{n,}表示符號前的元素至少會被匹配n次{n,m}表示符號前的元素至少被匹配n次,至多被匹配m次1.字符匹配常見量化符號的用法示例如下>>>text2='12,123,1233,12333,123333'>>>print(re.findall('123?',text2))#“3”最多重復(fù)1次['12','123','123','123','123’]>>>print(re.findall('123*',text2))#“3”可以重復(fù)0次或多次['12','123','1233','12333','123333’]>>>print(re.findall('123+',text2))#“3”可以重復(fù)1次或多次['123','1233','12333','123333']1.字符匹配>>>print(re.findall('123{1}',text2))#“3”正好重復(fù)1次['123','123','123','123’]>>>print(re.findall('123{2}',text2))#“3”正好重復(fù)2次['1233','1233','1233’]>>>print(re.findall('123{1,2}',text2))#“3”至少重復(fù)1次,至多重復(fù)2次['123','1233','1233','1233']2.轉(zhuǎn)義字符字符串中可以包含任何字符,如果待匹配的字符串中出現(xiàn)“$”“.”“[]”等特殊字符,那么將會與正則表達(dá)式的特殊字符發(fā)生沖突。遇到這種情況,可以使用轉(zhuǎn)義字符“\”將字符串內(nèi)的特殊字符進(jìn)行轉(zhuǎn)義,即“告訴”Python把這個字符當(dāng)作普通字符處理。如果字符串包含“\”,那么也可以使用“\”將“\”轉(zhuǎn)義?!癨”與一些字母組成了Python中的預(yù)定義字符。2.轉(zhuǎn)義字符常見的預(yù)定義字符及其含義如下表。預(yù)定義字符含
義\w匹配數(shù)字、字母、下畫線\W匹配非數(shù)字、非字母、非下畫線\s匹配空白字符\S匹配非空白字符\d匹配數(shù)字\D匹配非數(shù)字\b匹配單詞的邊界\B匹配非單詞的邊界在正則表達(dá)式中,通常需要用兩個反斜線“\\”表示一個反斜線“\”。例如,對于數(shù)字“\d”,需要用“\\d”表示。這種操作比較煩瑣,而Python中自帶的原生字符“r”可以簡化操作。對于文本中的“\”,只需要用“r'\'”表示即可,如“\\d”可以寫成“r'\d'”。在原生字符的幫助下,正則表達(dá)式的書寫更加方便。2.轉(zhuǎn)義字符轉(zhuǎn)義字符的使用示例如下。2.轉(zhuǎn)義字符>>>text3='wxid_6cp@16.co'>>>print(re.findall('\\d',text3))#使用轉(zhuǎn)義字符['6','1','6']>>>print(re.findall(r'\d',text3))#使用“r”['6','1','6']>>>print(re.findall(r'\D',text3))#匹配非數(shù)字['','w','x','i','d','_','c','p','@','.','c','o']>>>print(re.findall(r'\w',text3))#匹配字、字母、數(shù)字['w','x','i','d','_','6','c','p','1','6','c','o']2.轉(zhuǎn)義字符>>>print(re.findall(r'\W',text3))#匹配非數(shù)字和非字母['','@','.']>>>print(re.findall(r'\s',text3))#匹配空白字符['']>>>print(re.findall(r'\S',text3))#匹配非空白字符['w','x','i','d','_','6','c','p','@','1','6','.','c','o']>>>print(re.findall(r'\b',text3))#匹配單詞的邊界['','','','','','']>>>print(re.findall(r'\B',
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青山家庭團(tuán)聚協(xié)議書
- 鞋子購銷合同協(xié)議書
- 餐廳拆除合同協(xié)議書
- 駕校分校合伙協(xié)議書
- 荷蘭牧場轉(zhuǎn)讓協(xié)議書
- 防沙治沙治理協(xié)議書
- 車禍死亡賠償協(xié)議書
- 高考報考志愿協(xié)議書
- 車輛安全管理協(xié)議書
- 雇主擔(dān)??硟r協(xié)議書
- 輔導(dǎo)員職業(yè)能力大賽案例分析類型
- 《高氮馬氏體不銹鋼》
- 管道注水法試驗記錄
- 2023年湖北省技能高考文化綜合試題及答案
- 無機化學(xué)說課精講課件
- 靜脈輸液外滲的預(yù)防與處理完整版課件
- 民用無人駕駛航空器系統(tǒng)駕駛員訓(xùn)練大綱
- 裝修客戶需求表
- 大樹遮陽腳手架搭設(shè)方案
- 外源水楊酸對高溫脅迫下甘藍(lán)幼苗生長及生理特性的影響-第1篇
- 模具材料及表面處理全優(yōu)秀課件
評論
0/150
提交評論