Python程序開發(fā)案例教程(第2版)課件 第11章 正則表達(dá)式_第1頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第11章 正則表達(dá)式_第2頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第11章 正則表達(dá)式_第3頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第11章 正則表達(dá)式_第4頁(yè)
Python程序開發(fā)案例教程(第2版)課件 第11章 正則表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩69頁(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)介

第11章正則表達(dá)式《Python程序開發(fā)案例教程(第2版))》學(xué)習(xí)目標(biāo)/Target

熟悉元字符,能夠歸納元字符的功能以及基本用法熟悉預(yù)定義字符集,能夠歸納預(yù)定義字符集的功能了解re模塊,能夠說(shuō)出re模塊中常用函數(shù)或方法的作用掌握預(yù)編譯的方式,能夠通過(guò)complie()函數(shù)將正則表達(dá)式預(yù)編譯為正則對(duì)象掌握匹配與搜索的方式,能夠通過(guò)match()與search()函數(shù)實(shí)現(xiàn)匹配與搜索的功能學(xué)習(xí)目標(biāo)/Target

掌握匹配對(duì)象,能夠通過(guò)匹配對(duì)象的方法獲取匹配結(jié)果中的各項(xiàng)數(shù)據(jù)

掌握全文匹配的方式,能夠通過(guò)findall()與finditer()函數(shù)實(shí)現(xiàn)全文匹配的功能掌握檢索替換的方式,能夠通過(guò)sub()、subn()函數(shù)實(shí)現(xiàn)檢索替換的功能掌握文本分割的方式,能夠通過(guò)split()函數(shù)實(shí)現(xiàn)文本分割的功能熟悉貪婪匹配,能夠區(qū)分貪婪匹配和非貪婪匹配的不同章節(jié)概述/Summary網(wǎng)站開發(fā)人員需要對(duì)用戶在注冊(cè)頁(yè)面提交的信息進(jìn)行驗(yàn)證,包括手機(jī)號(hào)、用戶名、郵箱等。由于這些信息遵循復(fù)雜的規(guī)則,僅使用條件語(yǔ)句判斷將增加工作量。然而,正則表達(dá)式解決了這個(gè)問題。正則表達(dá)式是一種描述字符串結(jié)構(gòu)的語(yǔ)法規(guī)則,它在字符串的查找、匹配、替換等方面非常強(qiáng)大,并且被許多編程語(yǔ)言廣泛支持,包括Python。本章將介紹如何在Python中使用正則表達(dá)式。目錄/Contents010203基礎(chǔ)知識(shí)re模塊預(yù)編譯04匹配與搜索目錄/Contents050607匹配對(duì)象全文匹配檢索替換08實(shí)例2:電影信息提取目錄/Contents091011文本分割貪婪匹配實(shí)例3:用戶注冊(cè)驗(yàn)證基礎(chǔ)知識(shí)11.1

先定一個(gè)小目標(biāo)!熟悉元字符,能夠歸納元字符的功能以及基本用法11.1.1元字符元字符在正則表達(dá)式中,元字符指具有特殊含義的專用字符,可以用來(lái)規(guī)定其前導(dǎo)字符在目標(biāo)對(duì)象中出現(xiàn)的模式,前導(dǎo)字符是位于元字符之前的字符。正則表達(dá)式中的元字符一般由特殊字符和符號(hào)組成。11.1.1元字符元字符常用的元字符如表所示元字符功能說(shuō)明.點(diǎn)字符,匹配任何一個(gè)字符,除了換行符^脫字符,匹配字符串的開頭$美元符,匹配字符串的結(jié)尾|連接符,用于連接多個(gè)模式,匹配任意一個(gè)模式[]字符組,匹配其中出現(xiàn)的任意一個(gè)字符-連字符,表示范圍,比如1-5等價(jià)于1、2、3、4、5?匹配其前導(dǎo)字符0次或1次*匹配其前導(dǎo)字符0次或多次+匹配其前導(dǎo)字符1次或多次{n}/{m,n}匹配其前導(dǎo)字符n次/匹配其前導(dǎo)字符m~n次()在模式中劃分出子模式,并保存子模式的匹配結(jié)果11.1.1元字符1.點(diǎn)字符11.1.1元字符(1)點(diǎn)字符“.”Jam、Jom、J#m、Jim、J2mJ.m(2)脫字符“^”和美元符“$”category^cat(3)連接符“|”匹配cat或dogcat|dog(4)字符組“[]”argv或argsarg[vs]1.點(diǎn)字符11.1.1元字符(5)連字符“-”0~9之間的一個(gè)數(shù)字[0-9](6)元字符“?”Jun或JuneJune?(7)元字符“*”、“+”以及{n}/{m,n}hp、htp、http、htttpht*p(8)元字符“()”Jan或JanuaryJan(uary)?

先定一個(gè)小目標(biāo)!熟悉預(yù)定義字符集,能夠歸納預(yù)定義字符集的功能11.1.2預(yù)定義字符集正則表達(dá)式中預(yù)定義了一些字符集,字符集能以簡(jiǎn)潔的方式表示一些由元字符和普通字符表示的匹配規(guī)則。常見的預(yù)定義字符集如表所示。異常的類型11.1.2預(yù)定義字符集元字符功能說(shuō)明\w匹配下畫線或任何字母與數(shù)字\s匹配任意的空白字符,等價(jià)于[<空格>\t\r\n\f\v]\d匹配任意數(shù)字,等價(jià)于[0-9]\b匹配單詞的邊界\W與\w相反,匹配特殊字符\S與\s相反,匹配任意非空白字符的字符,等價(jià)于[^\s]\D與\d相反,匹配任意非數(shù)字的字符,等價(jià)于[^\d]\B與\b相反,匹配不出現(xiàn)在單詞邊界的元素\A僅匹配字符串的開頭,等價(jià)于^\Z僅匹配字符串的結(jié)尾,等價(jià)于$re模塊11.2

先定一個(gè)小目標(biāo)!了解re模塊,能夠說(shuō)出re模塊中常用函數(shù)或方法的作用11.2re模塊re模塊11.2re模塊Python中的re模塊是正則表達(dá)式模塊,該模塊提供了文本匹配、文本檢索替換、文本分割等功能。re模塊中常用的函數(shù)及方法如表所示。函數(shù)/方法說(shuō)明compile()對(duì)正則表達(dá)式進(jìn)行預(yù)編譯,并返回一個(gè)Pattern對(duì)象match()從字符串的開頭位置開始匹配,若匹配成功返回Match對(duì)象,否則返回Nonesearch()從字符串的任意位置開始匹配,若匹配成功返回Match對(duì)象,否則返回Nonesplit()根據(jù)正則表達(dá)式將目標(biāo)字符串進(jìn)行分割,并返回一個(gè)分割后的列表findall()在目標(biāo)字符串中從左至右查找與正則表達(dá)式模式匹配的所有非重疊子串,將返回一個(gè)包含這些子串的列表re模塊11.2re模塊函數(shù)/方法說(shuō)明finditer()功能與findall()相同,但返回結(jié)果是迭代器對(duì)象sub()搜索目標(biāo)字符串中與正則對(duì)象匹配的子串,使用指定字符串替換,并返回替換后的對(duì)象subn()搜索目標(biāo)字符串中與正則對(duì)象匹配的子串,使用指定字符串替換,返回替換后的對(duì)象和替換次數(shù)group()返回全部Pattern對(duì)象groups()返回一個(gè)包含全部匹配的子組的元組,若匹配失敗,則返回空元組Python中的re模塊是正則表達(dá)式模塊,該模塊提供了文本匹配、文本檢索替換、文本分割等功能。re模塊中常用的函數(shù)及方法如表所示。預(yù)編譯11.3

先定一個(gè)小目標(biāo)!掌握預(yù)編譯的方式,能夠通過(guò)complie()函數(shù)將正則表達(dá)式預(yù)編譯為正則對(duì)象11.3預(yù)編譯預(yù)編譯如果需要對(duì)一個(gè)正則表達(dá)式重復(fù)使用,那么可以使用compile()函數(shù)對(duì)其進(jìn)行預(yù)編譯,以節(jié)省每次編譯正則表達(dá)式的開銷。complie()函數(shù)的語(yǔ)法格式如下:11.3預(yù)編譯compile(pattern,flags=0)語(yǔ)法格式pattern:表示要編譯的正則表達(dá)式。flags:用于指定正則匹配的模式。預(yù)編譯參數(shù)flags用于指定正則匹配的模式,該參數(shù)的常用取值如表所示。11.3預(yù)編譯取值說(shuō)明re.I忽略大小寫的模式,使匹配對(duì)大小寫不敏感re.L用于本地化的識(shí)別匹配,它會(huì)根據(jù)當(dāng)前區(qū)域設(shè)置影響一些預(yù)定義字符集的解釋,這些預(yù)定義字符集包括\w、\W、\b、\B等re.M多行模式,使得^和$匹配每一行的開頭和結(jié)尾,而不僅僅是整個(gè)字符串的開頭和結(jié)尾re.S使.匹配所有字符,包括換行符re.U根據(jù)Unicode字符集解析字符re.A根據(jù)ASCII字符集解析字符re.X使用更靈活的格式書寫正則表達(dá)式,正則表達(dá)式可以是多行、忽略空白字符、加入注釋等,使用戶更容易理解11.3預(yù)編譯預(yù)編譯complie()函數(shù)在編譯成功后會(huì)返回一個(gè)Pattern對(duì)象。例如,使用complie()函數(shù)將正則表達(dá)式預(yù)編譯為Pattern對(duì)象,具體代碼如下:importreregex_obj=pile(r'\d')words='TodayisJuly26,2023.'print(regex_obj.findall(words))示例11.3預(yù)編譯預(yù)編譯如果想要匹配這一組字符串中所有的英文字母,可以在使用compile()函數(shù)預(yù)編譯正則對(duì)象時(shí)設(shè)置flags參數(shù),將正則表達(dá)式的匹配模式設(shè)置為re.I,忽略英文字母的大小寫,示例代碼如下:importre#將正則表達(dá)式[a-z]+預(yù)編譯為正則對(duì)象,同時(shí)指定匹配模式為re.Iregex_one=pile(r'[a-z]+',re.I)words='TodayisMarch28,2019.'print(regex_one.findall(words))示例匹配與搜索11.4

先定一個(gè)小目標(biāo)!掌握匹配與搜索的方式,能夠通過(guò)match()函數(shù)實(shí)現(xiàn)匹配功能11.4.1使用match()函數(shù)進(jìn)行匹配11.4.1使用match()函數(shù)進(jìn)行匹配match()函數(shù)用于從字符串的開頭開始匹配正則表達(dá)式模式,它會(huì)嘗試將模式與字符串的開頭部分進(jìn)行匹配,如果匹配成功,match()函數(shù)返回一個(gè)Match對(duì)象,也就是匹配對(duì)象;如果匹配失敗,它返回None。match(pattern,string,flags=0)語(yǔ)法格式使用match()函數(shù)進(jìn)行匹配pattern:表示正則表達(dá)式,它的取值既可以是正則對(duì)象,也可以是包含正則表達(dá)式的字符串。string:表示待匹配的目標(biāo)字符串。flags:表示使用的匹配模式,默認(rèn)值為0,說(shuō)明不使用任何匹配模式。11.4.1使用match()函數(shù)進(jìn)行匹配使用match()函數(shù)對(duì)指定的字符串進(jìn)行匹配與搜索,示例代碼如下:使用match()函數(shù)進(jìn)行匹配importredate_one="TodayisJuly26,2023."date_two="26July2023"print(re.match(r"\d",date_one))print(re.match(r"\d",date_two))示例

先定一個(gè)小目標(biāo)!掌握匹配與搜索的方式,能夠通過(guò)search()函數(shù)實(shí)現(xiàn)s搜索功能11.4.2使用search()函數(shù)進(jìn)行匹配search()函數(shù)會(huì)查找整個(gè)字符串,直到找到第一個(gè)滿足模式的子字符串。如果找到匹配項(xiàng),search()函數(shù)返回一個(gè)匹配對(duì)象;如果沒有找到匹配項(xiàng),它會(huì)返回None。search(pattern,string,flags=0)語(yǔ)法格式使用search()函數(shù)進(jìn)行匹配pattern:表示正則表達(dá)式,它的取值既可以是正則對(duì)象,也可以是包含正則表達(dá)式的字符串。string:表示待匹配的目標(biāo)字符串。flags:表示使用的匹配模式,默認(rèn)值為0,說(shuō)明不使用任何匹配模式。11.4.2使用search()函數(shù)進(jìn)行匹配使用search()函數(shù)對(duì)指定的字符串進(jìn)行匹配與搜索,示例代碼如下:使用search()函數(shù)進(jìn)行匹配importreinfo_one="Iwasbornin2000."info_two="20000505"print(re.search(r"\d",info_one))print(re.search(r"\D",info_two))示例11.4.2使用search()函數(shù)進(jìn)行匹配

先定一個(gè)小目標(biāo)!11.4.3實(shí)例1:手機(jī)號(hào)運(yùn)營(yíng)商根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例1:手機(jī)號(hào)運(yùn)營(yíng)商一個(gè)手機(jī)號(hào)碼由11位數(shù)字組成,前3位數(shù)字表示網(wǎng)絡(luò)識(shí)別號(hào),第4~7位數(shù)字表示地區(qū)編號(hào),第8-11位數(shù)字表示用戶編號(hào)。因此,我們可以通過(guò)手機(jī)號(hào)前3位數(shù)字的網(wǎng)絡(luò)識(shí)別號(hào)辨別手機(jī)號(hào)所屬運(yùn)營(yíng)商。11.4.3實(shí)例1:手機(jī)號(hào)運(yùn)營(yíng)商運(yùn)營(yíng)商號(hào)碼段中國(guó)移動(dòng)134、135、136、137、138、139、147、148、150、151、152、157、158、159、165、178、182、183、184、187、188、198中國(guó)聯(lián)通130、131、132、140、145、146、155、156、166、185、186、175、176中國(guó)電信133、149、153、180、181、189、177、173、174、191、199本實(shí)例要求編寫程序,實(shí)現(xiàn)判斷輸入的手機(jī)號(hào)碼是否合法以及判斷其所屬的運(yùn)營(yíng)商的功能。使用列表保存價(jià)格信息。定義空列表用于保存用戶選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路11.4.3實(shí)例1:手機(jī)號(hào)運(yùn)營(yíng)商在Chapter10項(xiàng)目中創(chuàng)建01_belong.py文件。在01_belong.py中編寫代碼。運(yùn)行01_belonge.py文件。實(shí)現(xiàn)步驟11.4.3實(shí)例1:手機(jī)號(hào)運(yùn)營(yíng)商匹配對(duì)象11.5

先定一個(gè)小目標(biāo)!掌握匹配對(duì)象,能夠通過(guò)匹配對(duì)象的方法獲取匹配結(jié)果中的各項(xiàng)數(shù)據(jù)11.5匹配對(duì)象使用match()函數(shù)和search()函數(shù)對(duì)字符串進(jìn)行匹配與搜索時(shí),返回的不是單一的匹配結(jié)果,而是如下形式的字符串:<re.Matchobject;span=(14,15),match='2'>返回形式匹配對(duì)象11.5匹配對(duì)象span表示本次獲取的匹配對(duì)象在原目標(biāo)文本中所處的位置,目標(biāo)文本的下標(biāo)從0開始。match表示匹配對(duì)象的內(nèi)容。span屬性是一個(gè)元組,元組中有兩個(gè)元素,第一個(gè)元素表示匹配對(duì)象在目標(biāo)字符串中的開始位置,第二個(gè)元素表示匹配對(duì)象在目標(biāo)字符串中的結(jié)束位置。匹配對(duì)象11.5匹配對(duì)象re模塊中提供了一些與匹配對(duì)象相關(guān)的常用方法,用于獲取匹配結(jié)果中的各項(xiàng)數(shù)據(jù),具體如表所示。方法說(shuō)明group([num])獲取匹配的字符串,或獲取第num個(gè)子組的匹配結(jié)果start()獲取匹配對(duì)象的開始位置end()獲取匹配對(duì)象的結(jié)束位置span()獲取表示匹配對(duì)象位置的元組使用search()函數(shù)對(duì)指定的字符串進(jìn)行匹配與搜索,示例代碼如下:importreword='helloitheima'match_result=re.search(r'\whe\w',word)print(match_result)

#輸出匹配對(duì)象print(match_result.group())#獲取匹配對(duì)象包含的字符串print(match_result.start())

#獲取匹配對(duì)象的開始位置print(match_result.end())#獲取匹配對(duì)象的結(jié)束位置print(match_result.span())

#獲取匹配對(duì)象的位置示例匹配對(duì)象11.5匹配對(duì)象當(dāng)正則表達(dá)式中包含子組時(shí),Python解釋器會(huì)將每個(gè)子組的匹配結(jié)果臨時(shí)存儲(chǔ)到緩沖區(qū)中,若用戶想獲取子組的匹配結(jié)果,可使用Match對(duì)象的group()方法,示例代碼如下:importrewords=re.search("(h)(e)",'helloheooo')print(words.group(1))#獲取第1個(gè)子組的匹配結(jié)果示例匹配對(duì)象11.5匹配對(duì)象匹配對(duì)象還有一個(gè)groups()方法,使用該方法可以獲取一個(gè)包含所有子組匹配結(jié)果的元組,示例如下:importrewords=re.search("(h)(e)",'helloheooo')print(words.groups())示例全文匹配11.6

先定一個(gè)小目標(biāo)!掌握全文匹配的方式,能夠通過(guò)findall()函數(shù)實(shí)現(xiàn)全文匹配的功能11.6.1findall()函數(shù)findall()函數(shù)可以獲取目標(biāo)字符串中所有與正則表達(dá)式匹配的內(nèi)容,并將所有匹配的內(nèi)容以列表的形式返回。findall()函數(shù)的語(yǔ)法格式如下:findall(pattern,string,flags=0)語(yǔ)法格式findall()函數(shù)pattern:表示正則表達(dá)式,它的取值既可以是正則對(duì)象,也可以是包含正則表達(dá)式的字符串。string:表示待匹配的目標(biāo)字符串。flags:表示使用的匹配模式,默認(rèn)值為0,說(shuō)明不使用任何匹配模式。11.6.1findall()函數(shù)以字符串“狗的英文:Dog,貓的英文:Cat?!睘槔?,使用findall()函數(shù)匹配該字符串中所有的中文字符,示例代碼如下:importrestring="狗的英文:Dog,貓的英文:Cat。"reg_zhn=pile(r"[\u4e00-\u9fa5]+")print(re.findall(reg_zhn,string))示例11.6.1findall()函數(shù)findall()函數(shù)

先定一個(gè)小目標(biāo)!掌握全文匹配的方式,能夠通過(guò)finditer()函數(shù)實(shí)現(xiàn)全文匹配的功能11.6.2finditer()函數(shù)finditer()函數(shù)同樣可以獲取目標(biāo)字符串中所有與正則表達(dá)式匹配的內(nèi)容,但該函數(shù)會(huì)將匹配到的子串以迭代器的形式返回。finditer()函數(shù)的語(yǔ)法格式如下:finditer(pattern,string,flags=0)語(yǔ)法格式finditer()函數(shù)pattern:表示正則表達(dá)式,它的取值既可以是正則對(duì)象,也可以是包含正則表達(dá)式的字符串。string:表示待匹配的目標(biāo)字符串。flags:表示使用的匹配模式,默認(rèn)值為0,說(shuō)明不使用任何匹配模式。11.6.2finditer()函數(shù)以字符串“狗的英文:Dog,貓的英文:Cat?!睘槔?,使用findall()函數(shù)匹配該字符串中所有的中文字符,示例代碼如下:importrestring="狗的英文:Dog,貓的英文:Cat。"reg_zhn=pile(r"[a-zA-Z]+")#匹配所有英文字符result_info=re.finditer(reg_zhn,string)print(result_info)print(type(result_info))示例11.6.2finditer()函數(shù)finditer()函數(shù)檢索替換11.7

先定一個(gè)小目標(biāo)!掌握檢索替換的方式,能夠通過(guò)sub()、subn()函數(shù)實(shí)現(xiàn)檢索替換的功能11.7檢索替換re模塊中提供的sub()、subn()函數(shù)用于替換目標(biāo)字符串中的匹配項(xiàng),這兩個(gè)函數(shù)的語(yǔ)法格式如下所示:sub(pattern,repl,string,count=0,flags=0)subn(pattern,repl,string,count=0,flags=0)語(yǔ)法格式檢索替換pattern:表示需要傳入的正則表達(dá)式。repl:表示用于替換的字符串。string:表示待匹配的目標(biāo)字符串。count:表示替換的次數(shù),默認(rèn)值為0,表示替換所有的匹配項(xiàng)。flags:表示使用的匹配模式,默認(rèn)值為0,說(shuō)明不使用任何匹配模式。11.7檢索替換sub()函數(shù)與sunb()函數(shù)的功能相似,不同的是若調(diào)用成功,sub()函數(shù)會(huì)返回替換后的字符串,subn()函數(shù)會(huì)返回包含替換結(jié)果和替換次數(shù)的元組。示例如下所示。importrewords='Andslowlyread,anddreamofthesoftlook'result_one=re.sub(r'\s','-',words)#使用sub()函數(shù)替換目標(biāo)字符串print(result_one)result_two=re.subn(r'\s','-',words)#使用subn()函數(shù)替換目標(biāo)字符串print(result_two)示例檢索替換11.7檢索替換實(shí)例2:電影信息提取11.8

先定一個(gè)小目標(biāo)!根據(jù)任務(wù)分析實(shí)現(xiàn)實(shí)例2:電影信息提取11.8實(shí)例2:電影信息提取現(xiàn)有“電影.txt”文件,該文件中保存了多部電影信息,包括電影排名、電影名稱、評(píng)分、類別、演員等,每種信息都有相對(duì)應(yīng)的標(biāo)簽,例如title標(biāo)簽對(duì)應(yīng)著電影名稱、rating標(biāo)簽對(duì)應(yīng)著電影評(píng)分、rank標(biāo)簽對(duì)應(yīng)著電影排名,示例如下:為了能夠提取指定的數(shù)據(jù)信息,可以使用正則表達(dá)式來(lái)解決。本實(shí)例要求編寫程序,實(shí)現(xiàn)將排名前20的電影名稱與評(píng)分信息提取。11.8實(shí)例2:電影信息提取{"rating":["9.6","50"],"rank":1,"cover_url":"/","is_playable":true,"id":"1292052","types":["劇情"],"regions":["中國(guó)"],"title":"我是電影名","url":"/","release_date":"1994-09-10","actor_count":25,"vote_count":1437526,"score":"9.6","actors":["張三","李四"],"is_watched":false}使用列表保存價(jià)格信息。定義空列表用于保存用戶選購(gòu)商品的價(jià)格。接收輸入的最大價(jià)格和最小價(jià)格。從價(jià)格列表中獲取每個(gè)商品價(jià)格。判斷商品價(jià)格區(qū)間。將商品價(jià)格進(jìn)行排序。實(shí)現(xiàn)思路11.8實(shí)例2:電影信息提取在Chapter10項(xiàng)目中創(chuàng)建02_info_extract.py文件。在02_info_extract.py中編寫代碼。運(yùn)行02_info_extract.py文件。實(shí)現(xiàn)步驟11.8實(shí)例2:電影信息提取文本分割11.9

先定一個(gè)小目標(biāo)!掌握文本分割的方式,能夠通過(guò)split()函數(shù)實(shí)現(xiàn)文本分割的功能11.9文本分割re模塊中提供的split()函數(shù)可使用與正則表達(dá)式模式相同的字符串分割指定文本。split()函數(shù)的語(yǔ)法格式如下:split(pattern,string,maxsplit=0,flags=0)語(yǔ)法格式文本分割pattern:表示需要傳入的正則表達(dá)式。string:表示待匹配的目標(biāo)字符串。maxsplit:用于指定分隔的次數(shù),默認(rèn)值為0,表示匹配指定模式并全部進(jìn)行分割。flags:表示可選標(biāo)識(shí)符。11.9文本分割split()函數(shù)調(diào)用成功后,分割出的子項(xiàng)會(huì)被保存到列表中并返回。以字符串“Andslowlyread,anddreamofthesoftlook”為例,使用split()函數(shù)分配字符串,具體代碼如下所示。importrewords='Andslowlyread,anddreamofthesoftlook'result=re.split(r'\s',words) #以\s匹配的結(jié)果分割字符串wordsprint(result) 示例11.9文本分割文本分割貪婪匹配11.10

先定一個(gè)小目標(biāo)!熟悉貪婪匹配,能夠區(qū)分貪婪匹配和非貪婪匹配的不同11.10貪婪匹配1.模塊的概念正則表達(dá)式中有兩種匹配方式,分別是貪婪匹配和非貪婪匹配。所謂貪婪匹配,即在條件滿足的情況下,盡量多匹配更多的內(nèi)容。而非貪婪匹配則相反,盡量匹配最少的內(nèi)容。Python中正則表達(dá)式的默認(rèn)匹配方式為貪婪匹配。8.1.1模塊的概念以字符串“Andslowlyread,anddreamofthesoftlook”為例,假設(shè)使用正則表達(dá)式“and\s.*”對(duì)該字符串進(jìn)行匹配,示例如下:importrewords='Andslowlyread,anddreamofthesoftlook'result=re.search(r'and\s.*',words)print(result.group())示例11.10貪婪匹配貪婪匹配貪婪匹配方式也稱為匹配優(yōu)先,即在可匹配可不匹配時(shí),優(yōu)先嘗試匹配;非貪婪匹配方式也稱忽略優(yōu)先,即在可匹配可不匹配時(shí),優(yōu)先嘗試忽略。這兩種匹配方式總是體現(xiàn)在重復(fù)匹配中,重復(fù)匹配中使用的元字符“?”、“*

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論