標籤:例子 live 引擎 其他 Regex 成功 介紹 轉換 技術分享
1. Regex基礎1.1. 簡單介紹
Regex並不是Python的一部分。Regex是用於處理字串的強大工具,擁有自己獨特的文法以及一個獨立的處理引擎,效率上可能不如str內建的方法,但功能十分強大。得益於這一點,在提供了Regex的語言裡,Regex的文法都是一樣的,區別只在於不同的程式設計語言實現支援的文法數量不同;但不用擔心,不被支援的文法通常是不常用的部分。如果已經在其他語言裡使用過Regex,只需要簡單看一看就可以上手了。
展示了使用Regex進行匹配的流程:
Regex的大致匹配過程是:依次拿出運算式和文本中的字元比較,如果每一個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。如果運算式中有量詞或邊界,這個過程會稍微有一些不同,但也是很好理解的,看中的樣本以及自己多使用幾次就能明白。
列出了Python支援的Regex元字元和文法:
1.2. 數量詞的貪婪模式與非貪婪模式
Regex通常用於在文本中尋找匹配的字串。Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元;非貪婪的則相反,總是嘗試匹配儘可能少的字元。例如:Regex"ab*"如果用於尋找"abbbc",將找到"abbb"。而如果使用非貪婪的數量詞"ab*?",將找到"a"。
1.3. 反斜線的困擾
與大多數程式設計語言相同,Regex裡使用"\"作為逸出字元,這就可能造成反斜線困擾。假如你需要匹配文本中的字元"\",那麼使用程式設計語言表示的Regex裡將需要4個反斜線"\\\\":前兩個和後兩個分別用於在程式設計語言裡轉義成反斜線,轉換成兩個反斜線後再在Regex裡轉義成一個反斜線。Python裡的原生字串很好地解決了這個問題,這個例子中的Regex可以使用r"\\"表示。同樣,匹配一個數位"\\d"可以寫成r"\d"。有了原生字串,你再也不用擔心是不是漏寫了反斜線,寫出來的運算式也更直觀。
1.4. 匹配模式
Regex提供了一些可用的匹配模式,比如忽略大小寫、多行匹配等,這部分內容將在Pattern類的Factory 方法re.compile(pattern[, flags])中一起介紹。
Regex基礎---轉自 PythonRegex指南 前邊