偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python正則表達式基本應用方式解讀

開發(fā) 后端
Python正則表達式的風格類似于Perl,它是從Python1.5版本開始增加的一個新的模塊,可以幫助我們完成一些比較難的功能。

Python編程語言是一種功能強大的面向對象的直譯式計算機程序語言。那么如何才能正確的應用這一語言來幫助我們完成一些功能需求的實現(xiàn)呢?在這里我們就可以先從Python正則表達式的相關內(nèi)容開始了解。#t#

Python 自1.5版本起增加了re 模塊,它提供 Perl 風格的正則表達式模式。Python 1.5之前版本則是通過 regex 模塊提供 Emecs 風格的模式。Emacs 風格模式可讀性稍差些,而且功能也不強,因此編寫新代碼時盡量不要再使用 regex 模塊,當然偶爾你還是可能在老代碼里發(fā)現(xiàn)其蹤影。

就其本質(zhì)而言,Python正則表達式(或 RE)是一種小型的、高度專業(yè)化的編程語言,(在Python中)它內(nèi)嵌在Python中,并通過 re 模塊實現(xiàn)。使用這個小型語言,你可以為想要匹配的相應字符串集指定規(guī)則;該字符串集可能包含英文語句、e-mail地址、TeX命令或任何你想搞定的東 西。然後你可以問諸如“這個字符串匹配該模式嗎?”或“在這個字符串中是否有部分匹配該模式呢?”。你也可以使用 RE 以各種方式來修改或分割字符串。

正則表達式模式被編譯成一系列的字節(jié)碼,然後由用 C 編寫的匹配引擎執(zhí)行。在高級用法中,也許還要仔細留意引擎是如何執(zhí)行給定 RE ,如何以特定方式編寫 RE 以令生產(chǎn)的字節(jié)碼運行速度更快。本文并不涉及優(yōu)化,因為那要求你已充分掌握了匹配引擎的內(nèi)部機制。

正則表達式語言相對小型和受限(功能有限),因此并非所有字符串處理都能用正則表達式完成。當然也有些任務可以用正則表達式完成, 不過最終表達式會變得異常復雜。碰到這些情形時,編寫 Python 代碼進行處理可能反而更好;盡管 Python 代碼比一個精巧的正則表達式要慢些,但它更易理解。

簡單模式

我們將從最簡單的Python正則表達式學習開始。由于正則表達式常用于字符串操作,那我們就從最常見的任務:字符匹配 下手。

有關正則表達式底層的計算機科學上的詳細解釋(確定性和非確定性有限自動機),你可以查閱編寫編譯器相關的任何教科書。

字符匹配

大多數(shù)字母和字符一般都會和自身匹配。例如,正則表達式 test 會和字符串“test”完全匹配。(你也可以使用大小寫不敏感模式,它還能讓這個 RE 匹配“Test”或“TEST”;稍後會有更多解釋。)

這個規(guī)則當然會有例外;有些字符比較特殊,它們和自身并不匹配,而是會表明應和一些特殊的東西匹配,或者它們會影響到 RE 其它部分的重復次數(shù)。本文很大篇幅專門討論了各種元字符及其作用。

重復

Python正則表達式第一件能做的事是能夠匹配不定長的字符集,而這是其它能作用在字符串上的方法所不能做到的。 不過,如果那是正則表達式唯一的附加功能的話,那么它們也就不那么優(yōu)秀了。它們的另一個功能就是你可以指定正則表達式的一部分的重復次數(shù)。

我們討論的第一個重復功能的元字符是 *。* 并不匹配字母字符 "*";相反,它指定前一個字符可以被匹配零次或更多次,而不是只有一次。

舉個例子,ca*t 將匹配 "ct" (0 個 "a" 字符), "cat" (1 個 "a"), "caaat" (3 個 "a" 字符)等等。RE 引擎有各種來自 C 的整數(shù)類型大小的內(nèi)部限制,以防止它匹配超過2億個 "a" 字符;你也許沒有足夠的內(nèi)存去建造那么大的字符串,所以將不會累計到那個限制。

象 * 這樣地重復是“貪婪的”;當重復一個 RE 時,匹配引擎會試著重復盡可能多的次數(shù)。如果模式的後面部分沒有被匹配,匹配引擎將退回并再次嘗試更小的重復。

責任編輯:曹凱 來源: 博客園
相關推薦

2018-09-27 15:25:08

正則表達式前端

2024-09-14 09:18:14

Python正則表達式

2010-02-23 13:47:51

Python正則表達式

2011-07-11 12:33:30

JAVA

2010-03-03 14:30:05

Python set類

2021-01-27 11:34:19

Python正則表達式字符串

2020-09-04 09:16:04

Python正則表達式虛擬機

2010-03-25 18:25:36

Python正則表達式

2010-03-11 08:55:45

python正則表達式

2019-12-10 10:40:57

Python正則表達式編程語言

2010-03-01 15:51:59

Python則表達式

2020-10-16 17:00:16

正則表達式字符Python

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2023-09-13 08:12:45

2022-03-28 06:19:14

正則表達式開發(fā)

2009-02-18 09:48:20

正則表達式Java教程

2019-07-17 15:45:47

正則表達式字符串前端

2009-09-16 18:19:34

正則表達式組
點贊
收藏

51CTO技術棧公眾號