python 正則re模塊詳解

python 正則re模塊詳解

ID:15330424

大小:97.50 KB

頁數(shù):20頁

時間:2018-08-02

python 正則re模塊詳解_第1頁
python 正則re模塊詳解_第2頁
python 正則re模塊詳解_第3頁
python 正則re模塊詳解_第4頁
python 正則re模塊詳解_第5頁
資源描述:

《python 正則re模塊詳解》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、[編輯]簡介Python自1.5版本起增加了re模塊,它提供Perl風(fēng)格的正則表達(dá)式模式。Python1.5之前版本則是通過regex模塊提供Emecs風(fēng)格的模式。Emacs風(fēng)格模式可讀性稍差些,而且功能也不強(qiáng),因此編寫新代碼時盡量不要再使用regex模塊,當(dāng)然偶爾你還是可能在老代碼里發(fā)現(xiàn)其蹤影。就其本質(zhì)而言,正則表達(dá)式(或RE)是一種小型的、高度專業(yè)化的編程語言,(在Python中)它內(nèi)嵌在Python中,并通過re模塊實(shí)現(xiàn)。使用這個小型語言,你可以為想要匹配的相應(yīng)字符串集指定規(guī)則;該字符串集可能包含英文語句、e-mail地址、TeX命令或任何你

2、想搞定的東西。然后你可以問諸如“這個字符串匹配該模式嗎?”或“在這個字符串中是否有部分匹配該模式呢?”。你也可以使用RE以各種方式來修改或分割字符串。正則表達(dá)式模式被編譯成一系列的字節(jié)碼,然后由用C編寫的匹配引擎執(zhí)行。在高級用法中,也許還要仔細(xì)留意引擎是如何執(zhí)行給定RE,如何以特定方式編寫RE以令生產(chǎn)的字節(jié)碼運(yùn)行速度更快。本文并不涉及優(yōu)化,因為那要求你已充分掌握了匹配引擎的內(nèi)部機(jī)制。哈哈正則表達(dá)式語言相對小型和受限(功能有限),因此并非所有字符串處理都能用正則表達(dá)式完成。當(dāng)然也有些任務(wù)可以用正則表達(dá)式完成,不過最終表達(dá)式會變得異常復(fù)雜。碰到這些情形

3、時,編寫Python代碼進(jìn)行處理可能反而更好;盡管Python代碼比一個精巧的正則表達(dá)式要慢些,但它更易理解。[編輯]簡單模式我們將從最簡單的正則表達(dá)式學(xué)習(xí)開始。由于正則表達(dá)式常用于字符串操作,那我們就從最常見的任務(wù):字符匹配下手。有關(guān)正則表達(dá)式底層的計算機(jī)科學(xué)上的詳細(xì)解釋(確定性和非確定性有限自動機(jī)),你可以查閱編寫編譯器相關(guān)的任何教科書。字符匹配大多數(shù)字母和字符一般都會和自身匹配。例如,正則表達(dá)式test會和字符串“test”完全匹配。(你也可以使用大小寫不敏感模式,它還能讓這個RE匹配“Test”或“TEST”;稍后會有更多解釋。)這個規(guī)則當(dāng)

4、然會有例外;有些字符比較特殊,它們和自身并不匹配,而是會表明應(yīng)和一些特殊的東西匹配,或者它們會影響到RE其它部分的重復(fù)次數(shù)。本文很大篇幅專門討論了各種元字符及其作用。這里有一個元字符的完整列表;其含義會在本指南馀下部分進(jìn)行討論。.^$*+?{[]

5、()我們首先考察的元字符是"["和"]"。它們常用來指定一個字符類別,所謂字符類別就是你想匹配的一個字符集。字符可以單個列出,也可以用“-”號分隔的兩個給定字符來表示一個字符區(qū)間。例如,[abc]將匹配"a","b",或"c"中的任意一個字符;也可以用區(qū)間[a-c]來表示同一字符集,和前者效果一致。如果

6、你只想匹配小寫字母,那么RE應(yīng)寫成[a-z].元字符在類別里并不起作用。例如,[akm$]將匹配字符"a","k","m",或"$"中的任意一個;"$"通常用作元字符,但在字符類別里,其特性被除去,恢復(fù)成普通字符。你可以用補(bǔ)集來匹配不在區(qū)間范圍內(nèi)的字符。其做法是把"^"作為類別的首個字符;其它地方的"^"只會簡單匹配"^"字符本身。例如,[^5]將匹配除"5"之外的任意字符。也許最重要的元字符是反斜杠""。做為Python中的字符串字母,反斜杠后面可以加不同的字符以表示不同特殊意義。它也可以用于取消所有的元字符,這樣你就可以在模式中匹配它們了。舉

7、個例子,如果你需要匹配字符"["或"",你可以在它們之前用反斜杠來取消它們的特殊意義:[或\。一些用""開始的特殊字符所表示的預(yù)定義字符集通常是很有用的,象數(shù)字集,字母集,或其它非空字符集。下列是可用的預(yù)設(shè)特殊字符:d匹配任何十進(jìn)制數(shù);它相當(dāng)于類[0-9]。D匹配任何非數(shù)字字符;它相當(dāng)于類[^0-9]。s匹配任何空白字符;它相當(dāng)于類[trfv]。S匹配任何非空白字符;它相當(dāng)于類[^trfv]。w匹配任何字母數(shù)字字符;它相當(dāng)于類[a-zA-Z0-9_]。W匹配任何非字母數(shù)字字符;它相當(dāng)于類[^a-zA-Z0

8、-9_]。這樣特殊字符都可以包含在一個字符類中。如,[s,.]字符類將匹配任何空白字符或","或"."。本節(jié)最后一個元字符是.。它匹配除了換行字符外的任何字符,在alternate模式(re.DOTALL)下它甚至可以匹配換行。"."通常被用于你想匹配“任何字符”的地方。[編輯]重復(fù)正則表達(dá)式第一件能做的事是能夠匹配不定長的字符集,而這是其它能作用在字符串上的方法所不能做到的。不過,如果那是正則表達(dá)式唯一的附加功能的話,那么它們也就不那么優(yōu)秀了。它們的另一個功能就是你可以指定正則表達(dá)式的一部分的重復(fù)次數(shù)。我們討論的第一個重復(fù)功能的元字符是*。*并

9、不匹配字母字符"*";相反,它指定前一個字符可以被匹配零次或更多次,而不是只有一次。舉個例子,ca*t將匹配"ct"(0個

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。