Python之re模塊案例詳解_第1頁
Python之re模塊案例詳解_第2頁
Python之re模塊案例詳解_第3頁
Python之re模塊案例詳解_第4頁
Python之re模塊案例詳解_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Python之re模塊案例詳解1、re.A(re.ASCII)

讓\w,\W,\b,\B,\d,\D,\s和\S執(zhí)行ASCII-只匹配完整的Unicode匹配代替。這僅對Unicode模式有意義,而對于字節(jié)模式則忽略。

2、re.I(re.IGNORECASE)

執(zhí)行不區(qū)分大小寫的匹配;類似的表達式也[A-Z]將匹配小寫字母。

3、re.L(re.LOCALE)

讓\w,\W,\b,\B和區(qū)分大小寫的匹配取決于當前的語言環(huán)境。該標志只能與字節(jié)模式一起使用。不建議使用此標志,因為語言環(huán)境機制非常不可靠,它一次只能處理一種“區(qū)域性”,并且僅適用于8位語言環(huán)境。默認情況下,Python3中已為Unicode(str)模式啟用了Unicode匹配,并且能夠處理不同的語言環(huán)境/語言。

4、re.M(re.MULTILINE)

指定時,模式字符'^'在字符串的開頭和每行的開頭(緊隨每個換行符之后)匹配;模式字符'$'在字符串的末尾和每行的末尾(緊接在每個換行符之前)匹配。默認情況下,'^'僅在字符串的開頭,字符串'$'的末尾和字符串末尾的換行符(如果有)之前立即匹配。

5、re.S(re.DOTALL)

使'.'特殊字符與任何字符都匹配,包括換行符;沒有此標志,'.'將匹配除換行符以外的任何內容。

(二)常用方法

1、pile(pattern,flags=0)

將正則表達式模式編譯為正則表達式對象,可使用match(),search()以及下面所述的其他方法將其用于匹配

prog=pile('\d{2}')#正則對象

prog.search('12abc')

_sre.SRE_Matchobject;span=(0,2),match='12'

prog.search('12abc').group()#通過調用group()方法得到匹配的字符串,如果字符串沒有匹配,則返回None。

prog.match('123abc')

_sre.SRE_Matchobject;span=(0,2),match='12'

prog.match('123abc').group()

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

掃描字符串以查找正則表達式模式產生匹配項的第一個位置,然后返回相應的match對象。None如果字符串中沒有位置與模式匹配,則返回;否則返回false。請注意,這與在字符串中的某個點找到零長度匹配不同。

#在這個字符串進行匹配,只會匹配一個對象re.search('\w+','abcde').group()

'abcde'

re.search('a','abcde').group()

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

如果字符串開頭的零個或多個字符與正則表達式模式匹配,則返回相應的匹配對象。None如果字符串與模式不匹配,則返回;否則返回false。請注意,這與零長度匹配不同。

#同search,不過在字符串開始處進行匹配,只會匹配一個對象

re.match('a','abcade').group()

re.match('\w+','abc123de').group()

'abc123de'

re.match('\D+','abc123de').group()#非數字

'abc'

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

如果整個字符串與正則表達式模式匹配,則返回相應的match對象。None如果字符串與模式不匹配,則返回;否則返回false。請注意,這與零長度匹配不同。

re.fullmatch('\w+','abcade').group()

'abcade'

re.fullmatch('abcade','abcade').group()

'abcade'

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

通過出現模式來拆分字符串。如果在pattern中使用了捕獲括號,那么模式中所有組的文本也將作為結果列表的一部分返回。如果maxsplit不為零,則最多會發(fā)生maxsplit分割,并將字符串的其余部分作為列表的最后一個元素返回。

re.split('[ab]','abcd')#先按'a'分割得到''和'bcd',在對''和'bcd'分別按'b'分割

['','','cd']

re.split(r'\W+','Words,words,words.')

['Words','words','words','']

re.split(r'(\W+)','Words,words,words.')

['Words',',','words',',','words','.','']

re.split(r'\W+','Words,words,words.',1)

['Words','words,words.']

re.split('[a-f]+','0a3B9',flags=re.IGNORECASE)

['0','3','9']

如果分隔符中有捕獲組,并且該匹配組在字符串的開頭匹配,則結果將從空字符串開始。字符串的末尾也是如此:

re.split(r'(\W+)','...words,words...')

['','...','words',',','words','...','']

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

以string列表形式返回string中pattern的所有非重疊匹配項。從左到右掃描該字符串,并以找到的順序返回匹配項。如果該模式中存在一個或多個組,則返回一個組列表;否則,返回一個列表。如果模式包含多個組,則這將是一個元組列表。空匹配項包含在結果中。

re.findall('a','Thisisabeautifulplace!')

['a','a','a']

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

返回一個迭代器,該迭代器在string類型的RE模式的所有非重疊匹配中產生匹配對象。從左到右掃描該字符串,并以找到的順序返回匹配項。空匹配項包含在結果中。

re.finditer('[ab]','Thisisabeautifulplace!')

callable_iteratorobjectat0x0000000000DCDA90#迭代器對象

ret=re.finditer('[ab]','Thisisabeautifulplace!')

next(ret).group()#查看下一個匹配值

[i.group()foriinret]#查看剩下所有匹配的值

['b','a','a']

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

返回通過用替換repl替換字符串中最左邊的不重疊模式所獲得的字符串。如果找不到該模式,則返回的字符串不變。repl可以是字符串或函數;如果是字符串,則處理其中的任何反斜杠轉義。即,將其轉換為單個換行符,將其轉換為回車,依此類推。count參數表示將匹配到的內容進行替換的次數

re.sub('\d','S','abc12jh45li78',2)#將匹配到的數字替換成S,替換2個

'abcSSjh45li78'

re.sub('\d','S','abc12jh45li78')#將匹配到所有的數字替換成S

'abcSSjhSSliSS'

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

執(zhí)行與相同的操作sub(),但返回一個元組。(new_string,number_of_subs_made)

re.subn('\d','S','abc12jh45li78',3)

('abcSSjhS5li78',3)

10、re.escape(pattern)

escape中的所有字符圖案,除了ASCII字母,數字和'_'。如果要匹配可能包含正則表達式元字符的任意文字字符串,這將很有用。

re.escape('python.exe\n')

'python\\.exe\\\n'

11、search()與match()方法

Python提供了兩種基于正則表達式的原始操作:re.match()僅在字符串的開頭匹配,re.search()檢查匹配項,在字符串中的任何位置檢查匹配項(這是Perl的默認設置)。

re.match("c","abcdef")#Notmatch

re.search("c","abcdef")#match

_sre.SRE_Matchobject;span=(2,3),match='c'

以開頭的正則表達式'^'可用于search()限制字符串開頭的匹配項:

re.match("c","abcdef")#

溫馨提示

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

最新文檔

評論

0/150

提交評論