對Python正則表達式進行入門學習
Python正則表達式是一種極其有用的文本處理技術,不過用起來有一定的難度。Python語言的re模塊對基本的正則表達式做了許多有益的改進。對于需要處理文本的程序員來說。
本文為不熟悉正則表達式的讀者提供了一個快速入門的教程。當然,對于那些熟悉其他語言中的正則表達式的部分讀者而言,本文也是有益的,因為您可以從中了解Python語言在正則表達式方面的特別之處。
一、什么是正則表達式
在編寫處理字符串的程序或網頁時,經常會有查找符合某些復雜規則(或稱為模式)的字符串的需要。正則表達式就是用于描述這些規則(或模式)的工具。換句話說,正則表達式就是記錄文本規則的代碼。一旦發現了符合要求的文本,就可以用對其進行相應的修改了。#t#
大家還記得Windows命令行中用于文件查找的通配符吧,即*和?。當我們查找某目錄下所有的PDF文檔的時候,只要搜索*.pdf即可。在這里,*會被解釋成任意的字符串。和通配符類似,Python正則表達式也是用來進行文本匹配的工具,只不過較之于通配符,它能更精確地描述你的需求,例如用來查找一個web頁面中的所有電話號碼。
我們知道,電話號碼一般都有一個固定的寫法:區號-電話號碼,即有以0開頭,后跟2-3個數字,然后是一個連字號“-”,最后是7或8位數字組成的字符串(例如010-12345678或0634-1234567)。
二、最簡單的正則表達式
學習正則表達式的最好方法是從具體的示例入手,讓讀者親自動手實驗。下面給出了不少簡單的例子,并對它們作了詳細的說明。當我們在一字符串中查找to,你可以使用正則表達式to。這幾乎是最簡單的正則表達式了,它可以精確匹配這樣的字符串:由兩個字符組成,前一個字符是t,后一個是o。
為了演示,我們提供了一個函數re_show(),可以把看作是re模塊的一個封裝器,它會把給定的字符串中匹配(說某個字符串與某個正則表達式匹配,通常是指這個字符串里有一部分或幾部分或全部能滿足表達式給出的條件)的內容加上一個花括號。
現在我們不對該函數做進一步的介紹,您只要知道re_show()的第一個參數是一個正則表達式,第二個參數是要匹配的字符串,當找到匹配的內容時,就用花括號將它括起來就行了。還是源代碼如下:
- import re
- def re_show(pat, s):
- print re.compile(pat, re.M).sub("{\g<0>}", s.rstrip()),'\n'
- s = '''Python runs on Windows, Linux/Unix,
- Mac OS X, OS/2, Amiga, Palm Handhelds, and Nokia mobile phones.
- Python has also been ported to the Java and .NET virtual machines.'''
- re_show("to",s)
其中,函數調用re_show("to",s)的作用就是查找字符串s中是否包含字符串to,或者說字符串s是否匹配Python正則表達式to;如果匹配的話,就給字符串to加上花括號。上述代碼的執行結果如下所示:
- Python runs on Windows, Linux/Unix,
- Mac OS X, OS/2, Amiga, Palm Handhelds, and Nokia mobile phones.
- Python has also been ported {to} the Java and .NET virtual machines.
【編輯推薦】