天天看點

正規表達式常用用法

正規表達式是處理字元串查找、比對、替換的非常有效的工具,記錄python中正規表達式子產品re的常用方法。

1、re.compile(pattern[, flag])

compile 函數用于編譯正規表達式,生成一個正規表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

參數:

  • pattern : 一個字元串形式的正規表達式
  • flags : 可選,表示比對模式,比如忽略大小寫,多行模式等,具體參數為:
    1. re.I 忽略大小寫
    2. re.L 表示特殊字元集 \w, \W, \b, \B, \s, \S 依賴于目前環境
    3. re.M 多行模式
    4. re.S 即為 . 并且包括換行符在内的任意字元(. 不包括換行符)
    5. re.U 表示特殊字元集 \w, \W, \b, \B, \d, \D, \s, \S 依賴于 Unicode 字元屬性資料庫
    6. 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支援的正規表達式元字元和文法:

正規表達式常用用法

隻整理了常用方法,後續更新更進階用法。

參考:

[1] http://www.runoob.com/python/python-reg-expressions.html#flags

[2] http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html