大學計算機基礎及應用(Python篇)課件:正則表達式_第1頁
大學計算機基礎及應用(Python篇)課件:正則表達式_第2頁
大學計算機基礎及應用(Python篇)課件:正則表達式_第3頁
大學計算機基礎及應用(Python篇)課件:正則表達式_第4頁
大學計算機基礎及應用(Python篇)課件:正則表達式_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

正則表達式

學習目標1、正則表達式語法2、使用re模塊實現(xiàn)正則表達式的操作1、正則表達式語法在處理字符串時,經(jīng)常會涉及查找符合某些規(guī)則的字符串。正則表達式就是用于描述這些規(guī)則的工具,換言之,正則表達式就是記錄文本規(guī)則的代碼。您可能使用?和*通配符來查找硬盤上的文件。?通配符匹配文件名中的0個或1個字符,比如可以通過abc?.exe來查找當前文件夾中文件名為abc.exe、abcd.exe、abc1.exe等一系列的文件。而*通配符匹配零個或多個字符。可以通過*.txt來查找當前文件夾中所有的文本文件。這里的abc?.exe、*.txt可以被理解為簡單的正則表達式。1、正則表達式語法13.1.1元字符元字符是一種用于描述其它字符的特殊字符,它由基本元字符和普通字符兩部分組成?;驹址菢?gòu)成元字符的元素之一。普通字符包括沒有顯式指定為元字符的所有可打印和不可打印字符。這包括所有大寫和小寫字母、所有數(shù)字、所有標點符號和一些其他符號。13.1.2限定符限定符用來指定正則表達式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配。有*或+或?或{m}或{m,}或{m,n}共6種。13.1.3范圍字符1、正則表達式語法13.1.5選擇字符試想一下,如何匹配手機號碼?手機號都為11位,且以1開頭,第二位一般為3、5、6、7、8、9,剩下八位任意數(shù)字。第二位數(shù)字包含著條件選擇的邏輯,這就需要使用選擇符(|)來實現(xiàn)。該字符可以理解為“或”,匹配手機號的表達式可以寫成如下方式:1(3|4|5|6|7|8|9)\d{9}$國內(nèi)固定電話區(qū)號3~4位,號碼7~8位。例如021-87654321,可以用如下表達式來匹配:\d{3}-\d{8}$|\d{4}-\d{7}$1、正則表達式語法13.1.6轉(zhuǎn)義字符(r和\)Python中字符串前面加上r表示原生字符串(rawstring),與大多數(shù)編程語言相同,正則表達式里使用"\"作為轉(zhuǎn)義字符,這就可能造成反斜杠困擾。13.1.7分組通過13.1.5節(jié)中的例子,大家對小括號的作用有了一定的了解。小括號字符的第一個作用就是可以改變限定符的作用范圍,如“|”“*”“^”等。例如:(Fri|Thurs)day這個表達式是匹配Friday或Thursday,如果不使用小括號,那么就變成了匹配單詞Fri或Thursday了。正則表達式是一個特殊的字符序列,能方便地檢查一個字符串是否與某種模式匹配。學會使用Python自帶的re模塊編程非常有用,因為它可以幫我們快速檢查一個用戶輸入的email或電話號碼格式是否有效,也可以幫我們快速從文本中提取需要的字符串。本節(jié)我們就來學習如何編寫Python正則表達式,并利用re模塊自帶的方法來判斷字符串的匹配并從目標字符串提取我們想要的內(nèi)容。2、使用re模塊實現(xiàn)正則表達式的操作在使用re模塊時,需要先應用import語句將其引入,具體代碼如下:importrere模塊主要包含如下6種方法:pile:編譯一個正則表達式模式(pattern)re.match:從頭開始匹配,使用group()方法可以獲取第一個匹配值re.search:用包含方式匹配,使用group()方法可以獲取第一個匹配值re.findall:用包含方式匹配,把所有匹配到的字符(多個匹配值)放到以列表中返回re.sub:匹配字符并替換re.split:以匹配到的字符當作列表分隔符,返回列表2、使用re模塊實現(xiàn)正則表達式的操作13.2.1分組匹配1.pile方法compile函數(shù)用于編譯正則表達式,生成一個正則表達式(pattern)對象,供match()和search()這兩個函數(shù)使用。其函數(shù)包含兩個參數(shù),一個pattern,一個可選參數(shù)flags。pile(pattern[,flags])參數(shù):pattern:一個字符串形式的正則表達式flags:可選,表示匹配模式,比如忽略大小寫,多行模式等。2.re.match和re.search方法re.match和re.search方法類似,唯一不同的是re.match從頭匹配,re.search可以從字符串中任一位置匹配。如果有匹配對象match返回,可以使用match.group()提取匹配字符串。re.match(pattern,string[,flags])patter:表示模式字符串,由要匹配的正則表達式轉(zhuǎn)換而來。string:表示要匹配的字符串。flags:可選參數(shù),表示標志位,用于控制匹配方式,常用的標志及其說明如表13.3所示。下同re.search(pattern,string[,flags])3.re.findall方法前面我們已經(jīng)提到過,當您試圖從一個字符串中提取所有符合正則表達式的字符串列表時需要使用re.findall方法。findall方法使用方法有兩種,一種是pattern.findall(string),另一種是re.findall(pattern,string)。re.findall方法經(jīng)常用于從爬蟲爬來的文本中提取有用信息。findall函數(shù)返回的總是正則表達式在字符串中所有匹配結(jié)果的列表。pattern匹配模式,由pile獲得string需要匹配的字符串13.2.2替換字符串re.sub方法用于替換字符串中的匹配項。其語法格式如下:re.sub(pattern,repl,string,count=0,flags=0)參數(shù)說明如下:pattern:表示模式字符串,由要匹配的正則表達式轉(zhuǎn)換而來。repl:表示替換的字符串,也可為一個函數(shù)。string:表示要被查找替換的原始字符串。count:可選參數(shù),表示模式匹配后替換的最大次數(shù),默認0表示替換所有的匹配。flags:可選參數(shù),表示標志位,用于控制匹配的方式,如是否區(qū)分字母大小寫。13.2.3使用正則表達式分割字符串re.split方法用于實現(xiàn)根據(jù)正則表達式分割字符串,并返回分割后的字符串列表。其語法格式如下:re.split(pattern,string,[maxsplit],[flags])參數(shù)說明如下:pattern:相當于str.split()中的sep,分隔符的意思,不但可以是字符串,也可以是正則表達式。string

溫馨提示

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

評論

0/150

提交評論