學習python的正則表達式,主要有兩個方面學習:
第一,學習如何寫正則表達式,主要是掌握其語法規范。正則表達式的語法規范是通用的,對各種開發語言都是一致的。
第二,學習如何使用正則表達式,也就是掌握python中相應的模塊,在python中,通過提供的標准模塊 re 來提供相應的使用正則表達式的api
正則表達式的核心作用就是匹配文本片段,即給出一個正則表達式,以及一段文本,看看這段文本中哪些片段是可以與正則表達式匹配的。
利用正則表達式可以實現非常強大的文本處理功能,如匹配、查找、替換、分組等。
例1:我們先來看一個簡單例子:
#coding=utf-8 import re #search的第一個參數是 正則表達式,第二個參數是要處理的文本 if re.search('abc','12abc45'): #結果輸出find print "find" else: print "None" #search的第一個參數是 正則表達式,第二個參數是要處理的文本 if re.match('abc','12abc45'): #結果輸出None print "find" else: print "None"
上面的代碼涉及到如下信息:
1)re模塊,這是python提供的處理正則表達式的標准模塊,包含了很多有用的方法
2)re模塊的search方法和match方法,這兩個方法都是在給定文本中查找與指定正則表達式第一個相匹配的文本片段。如果找到,返回一個對象,對象中包含了相應的文本片段信息。如果找不到,返回None。所以其查找的結果可以用作條件表達式中。
search與match的區別是,search方法是在整個字符串中查找匹配的字串,而match方法是在開頭匹配,也就是說必須開頭就要符合。
3)search與match方法的第一個參數就是正在表達式,這里是一個普通的字符串,其實這是最簡單的正則表達式。正則表達式最強大的之處就是它有各種元字符。
如 a.b ,這里的.就是一個特殊字符,可以匹配任何單個字符(除換行符),如re.search('a.c','12axc45') 是可以匹配成功的。
例2:精確匹配的處理
上面介紹的 search 方法是在整個字符串中查找匹配,match方法是從頭匹配,但對后面的無要求。
在某些場合下,需要精確匹配,如給定正則表達式為 a.c ,希望只匹配 axc , abc 等,頭尾不希望有多余的字符。
這是可在正則表達式的頭加符號︿ ,在結尾加上 $ ,可以強制精確匹配。但然也可以只限制開始 或 結束。
使用 ︿,其實相當於使用match方法。
如:
>>> print re.search('^abc$','abcd')
None
>>> print re.search('^abc$','abc')
<_sre.SRE_Match object at 0x0339A020>