正規表達式是處理字元串查找、比對、替換的非常有效的工具,記錄python中正規表達式子產品re的常用方法。
1、re.compile(pattern[, flag])
compile 函數用于編譯正規表達式,生成一個正規表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。
參數:
- pattern : 一個字元串形式的正規表達式
- flags : 可選,表示比對模式,比如忽略大小寫,多行模式等,具體參數為:
- re.I 忽略大小寫
- re.L 表示特殊字元集 \w, \W, \b, \B, \s, \S 依賴于目前環境
- re.M 多行模式
- re.S 即為 . 并且包括換行符在内的任意字元(. 不包括換行符)
- re.U 表示特殊字元集 \w, \W, \b, \B, \d, \D, \s, \S 依賴于 Unicode 字元屬性資料庫
- re.X 為了增加可讀性,忽略空格和 # 後面的注釋
2、 re.match(pattern,string,flag=0)
從字元串的起始位置比對一個模式(pattern),如果不是起始位置比對成功的話,傳回None
參數:
- pattern : 比對的正規表達式
- string : 要比對的字元串
- flag :标志位,用于控制正規表達式的比對方式,如:是否區分大小寫,多行比對等等。參見【1】中的flags
3、re.search(pattern,string,flags=0)
掃描整個字元串并傳回第一個成功的比對
參數:
- pattern : 比對的正規表達式
- string : 要比對的字元串
- flag :标志位,用于控制正規表達式的比對方式,如:是否區分大小寫,多行比對等等。參見【1】中的flags
re.match與re.search的差別
re.match隻比對字元串的開始,如果字元串開始不符合正規表達式,則比對失敗,函數傳回None;而re.search比對整個字元串,直到找到一個比對。
4、re.sub(pattern,repl,string,count=0,flags=0)
替換字元串中的比對項
參數:
- pattern : 正則中的模式字元串。
- repl : 替換的字元串,也可為一個函數。
- string : 要被查找替換的原始字元串。
- count : 模式比對後替換的最大次數,預設 0 表示替換所有的比對。
5、re.findall(string[,pos[,endpos]])
在字元串中找到正規表達式所比對的所有子串,并傳回一個清單,如果沒有找到比對的,則傳回一個空清單
注意:match 和 search 是比對一次 findall 比對所有。
參數:
- string : 待比對的字元串。
- pos : 可選參數,指定字元串的起始位置,預設為 0。
- endpos : 可選參數,指定字元串的結束位置,預設為字元串的長度。
6、re.finditer(pattern,string,flags=0)
和 findall 類似,在字元串中找到正規表達式所比對的所有子串,并把它們作為一個疊代器傳回。
參數:
- pattern : 比對的正規表達式
- string : 要比對的字元串
- flag :标志位,用于控制正規表達式的比對方式,如:是否區分大小寫,多行比對等等。參見【1】中的flags
7、re.split(pattern,string[ ,maxsplit=0,flag=0])
按照能夠比對的子串将字元串分割後傳回清單
參數:
- pattern : 比對的正規表達式
- string : 要比對的字元串
- maxsplit : 分隔次數,maxsplit=1 分隔一次,預設為0,不限制次數
- flag :标志位,用于控制正規表達式的比對方式,如:是否區分大小寫,多行比對等等。參見【1】中的flags
python支援的正規表達式元字元和文法:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90keNd3aE10dBRVT3V1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN0MTMyIzM5EDOyYDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
隻整理了常用方法,後續更新更進階用法。
參考:
[1] http://www.runoob.com/python/python-reg-expressions.html#flags
[2] http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html