Python正則表達(dá)式re模塊簡(jiǎn)明筆記_第1頁(yè)
Python正則表達(dá)式re模塊簡(jiǎn)明筆記_第2頁(yè)
Python正則表達(dá)式re模塊簡(jiǎn)明筆記_第3頁(yè)
Python正則表達(dá)式re模塊簡(jiǎn)明筆記_第4頁(yè)
Python正則表達(dá)式re模塊簡(jiǎn)明筆記_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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)介

1、python正則表達(dá)式re模塊簡(jiǎn)明注釋正則表達(dá)式不是程序,而是用于處理字符串的模式。要使用它處理字符串,必須使用支持正則表達(dá)式的工具,如Linux中的awk、sed、grep或編程語(yǔ)言Perl、Python、Java等。作者:FunHacks來(lái)源:funhacks | 2016-12-28113362收藏分享;分享簡(jiǎn)介“正則表達(dá)式”(regular expression)是可與文本片段匹配的模式。最簡(jiǎn)單的正則表達(dá)式是與自身匹配的正則字符串。例如,正則表達(dá)式“hello”可以與字符串“hello”匹配。正則表達(dá)式不是程序,而是用于處理字符串的模式。要使用它處理字符串,必須使用支持正則表達(dá)式的工具

2、,如Linux中的awk、sed、grep或編程語(yǔ)言Perl、Python、Java等。正則表達(dá)式有多種樣式,下表列出了適用于編程語(yǔ)言(如Python或Perl)的一些元字符和說(shuō)明。它是假的python允許使用內(nèi)置re模塊的正則表達(dá)式。需要注意的一點(diǎn)是正則表達(dá)式使用轉(zhuǎn)義特殊字符。例如 python .要匹配“org”字符串,請(qǐng)使用正則表達(dá)式python 。由于必須使用org,Python的字符串本身也轉(zhuǎn)義為,因此上述正則表達(dá)式從Python到Python 。由于必須寫(xiě)為org,容易出現(xiàn)問(wèn)題,因此建議使用Python的原始字符串。上述正則表達(dá)式只需添加一個(gè)r前綴。RRe模塊提

3、供了許多有用的函數(shù),包括:Compile函數(shù)Match函數(shù)Search函數(shù)Findall函數(shù)Finditer函數(shù)Split函數(shù)Sub函數(shù)Subn函數(shù)Re模塊的一般使用步驟如下:使用Compile函數(shù)將正則表達(dá)式的字符串形式編譯為單個(gè)Pattern對(duì)象通過(guò)Pattern對(duì)象提供的一系列方法執(zhí)行文本匹配查找,獲得匹配結(jié)果(一個(gè)Match對(duì)象)最后,使用Match對(duì)象提供的屬性和方法獲取信息,并根據(jù)需要執(zhí)行其他任務(wù)Compile函數(shù)Compile函數(shù)用于編譯正則表達(dá)式和生成Pattern對(duì)象,常見(jiàn)的用法形式如下:Rpile(pattern,flag)其中pattern是字符串形式的正則表達(dá)

4、式,flag是可選參數(shù),表示匹配模式,如忽略大小寫(xiě)、多行模式等?,F(xiàn)在,讓我們看一個(gè)例子。Import re#將正則表達(dá)式編譯為Pattern對(duì)象Pattern=pile(rd)您可以在此將規(guī)則運(yùn)算式編譯為pattern物件,然后使用Pattern的各種方法尋找文字相符項(xiàng)目。Pattern對(duì)象的一些常用方法如下:Match方法Search方法Findall方法Finditer方法Split方法Sub方法Subn方法Match方法Match方法用于查找字符串的頭(也可以指定開(kāi)始位置),每次找到一個(gè)匹配的結(jié)果時(shí)都會(huì)返回match方法,而不是查找所有匹配的結(jié)果。一般使用形式如下:Match

5、(string,pos,endpos)其中string是要匹配的字符串,pos和endpos作為可選參數(shù)指定字符串的開(kāi)始和結(jié)束位置,默認(rèn)值分別為0和len(字符串長(zhǎng)度)。因此,如果不指定pos和endpos,match方法默認(rèn)匹配字符串的頭部。如果匹配成功,則返回Match對(duì)象;如果沒(méi)有匹配,則返回None。請(qǐng)看一個(gè)例子。Import rePattern=pile(rd) #用于匹配至少一個(gè)數(shù)字m=pattern . match(one 12 two three 34 four)#查找沒(méi)有匹配項(xiàng)的頭部打印m無(wú)m=pattern . match(one 12 two three 34

6、 four,2,10)從# e的位置開(kāi)始匹配,無(wú)匹配打印m無(wú)m=pattern . match(one 12 two three 34 four,3,10) # 1開(kāi)始完全匹配Print m #返回Match對(duì)象_ sre.sre _ match物件at0x1a42aac0M.group(0) #可以省略012M.start(0) #可以省略03M.end(0) #可以省略05M.span(0) #可以省略0(3,5)如果上述匹配成功,則返回Match對(duì)象。其中:group(group 1,)方法用于獲取一個(gè)或多個(gè)分組匹配字符串,在獲取整個(gè)匹配子字符串時(shí),group(0);或者,您可以直接使用

7、group (0)。Start(group)方法用于獲取整個(gè)字符串中匹配子字符串的開(kāi)始位置(子字符串中第一個(gè)字符的索引),參數(shù)默認(rèn)值為0。End(group)方法用于獲取整個(gè)字符串中匹配子字符串的結(jié)束位置(子字符串中最后一個(gè)字符的索引1),參數(shù)默認(rèn)值為0。Span(group)方法返回(start(group),end(group)。再舉一個(gè)例子:Import repattern= pile(r(a-z)(a-z)re . I)# re . I表示忽略大小寫(xiě)m=pattern . match(hello world wide web)Print m #匹配成功,返回一個(gè)Match對(duì)

8、象_ sre.sre _ match物件at0x10 bea 83 E8返回M.group(0) #匹配成功的完整子字符串海洛世界返回成功匹配M.span(0) #的完整子字符串的索引(0,11)M.group(1) #返回第一個(gè)組匹配成功的子字符串海洛M.span(1) #返回成功匹配第一個(gè)組的子字符串的索引(0,5)M.group(2) #返回第二個(gè)組匹配成功的子字符串世界M.span(2) #返回成功匹配第二個(gè)組的子字符串(6,11)M.groups() #表示(m.group(1),m.group(2)、)的總和“Hello,World”M.group(3) #沒(méi)有第三個(gè)組Trace

9、back(最近呼叫l(wèi)ast) :File ,line1,in index error : no such groupSearch方法Search方法用于查找字符串中的所有位置。當(dāng)返回一個(gè)匹配結(jié)果(而不是一次匹配所有匹配結(jié)果)時(shí),通常使用以下方法:Search(string,pos,endpos)其中string是要匹配的字符串,pos和endpos作為可選參數(shù)指定字符串的開(kāi)始和結(jié)束位置,默認(rèn)值分別為0和len(字符串長(zhǎng)度)。如果匹配成功,則返回Match對(duì)象;如果沒(méi)有匹配,則返回None。讓我們看一個(gè)例子。Import rePattern=pile(d)使用m=pattern .

10、search(one 12 two three 34 four)# match方法時(shí)不匹配m_ sre.sre _ match物件at0x10 cc 03 AC 0M.group()12指定字符串部分m=pattern . search(one 12 two three 34 four,10,30) #m_ sre.sre _ match物件at0x10 cc 03 b 28M.group()34M.span()(13,15)再舉一個(gè)例子:# -*- coding: UTF-8 -*-Import re#將正則表達(dá)式編譯為Pattern對(duì)象Pattern=pile(rd)使用# s

11、earch()查找匹配的子字符串,如果沒(méi)有匹配的子字符串,則返回None無(wú)法使用# match()成功匹配M=pattern.search(hello 789)If m:使用# Match獲取分組信息Print matching string :m.group()Print position:m.span()運(yùn)行結(jié)果:Matching string:位置: (6,12)Findall方法上述match和search方法都匹配一次,如果找到一個(gè)匹配結(jié)果,則返回。但是,在大多數(shù)情況下,必須搜索整個(gè)字符串以獲得所有匹配的結(jié)果。Findall方法的用法如下:Findall(string,pos,end

12、pos)其中string是要匹配的字符串,pos和endpos作為可選參數(shù)指定字符串的開(kāi)始和結(jié)束位置,默認(rèn)值分別為0和len(字符串長(zhǎng)度)。Findall將所有可能匹配的子字符串返回到列表,如果不匹配,則返回空列表。請(qǐng)看一個(gè)示例:Import re找到數(shù)字Pattern=pile(rd) #result 1=pattern . find all(hello 789)result 2=pattern . find all(one 1 two 2 three 3 four 4,0,10)Print result1Print result2運(yùn)行結(jié)果:,7891,2Finditer方法Fi

13、nditer方法的行為類似于findall,它搜索整個(gè)字符串以獲得所有匹配結(jié)果。但是,它返回按順序訪問(wèn)每個(gè)匹配結(jié)果(Match對(duì)象)的迭代器。請(qǐng)看一個(gè)示例:# -*- coding: UTF-8 -*-Import rePattern=pile(rd)result _ ITER 1=pattern . finditer(hello 789)result _ ITER 2=pattern . finditer(one 1 two 2 three 3 four 4,0,10)Print type(result_iter1)Print type(result_iter2)Print re

14、sult1.For m1 in result _ iter1: # m1是Match物件Print matching string : ,職位: 。format (m1.group () m1.span()Print result2.For m2 in result _ iter2:Print matching string : ,職位: 。format (m2.group () m2.span()運(yùn)行結(jié)果:Type callable-iterator結(jié)果1.Matching string :職位: (6、12)Matching string : 789,職位: (13,16)結(jié)果2.Matc

15、hing string : 1,職位: (3,4)Matching string : 2,職位: (7,8)Split方法Split方法按匹配的子字符串拆分字符串,然后返回列表,如下所示:Split(string,maxsplit)其中maxsplit用于指定最大拆分?jǐn)?shù),不指定全部拆分。請(qǐng)看一個(gè)示例:Import reP=pile(rs,;)Print p.split(a,b;C d)運(yùn)行結(jié)果:a、b、c、dSub方法Sub方法用于替換。以下列形式使用:Sub(repl,string,count)其中repl可以是字符串或函數(shù)。如果Repl是字符串,則repl用于替換字符串中每個(gè)匹配的子字符串,并返回替換字符串。此外,repl可以使用id引用組,但不能使用數(shù)字0。如果Repl是函數(shù),則此方法只接受一個(gè)參數(shù)(Match對(duì)象),并且必須返回要替換的字符串(返回的字符串

溫馨提示

  • 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)論