正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。python
re 模塊使 Python 語言擁有所有的正則表達式功能。正則表達式
compile 函數根據一個模式字符串和可選的標誌參數生成一個正則表達式對象。該對象擁有一系列方法用於正則表達式匹配和替換。緩存
re 模塊也提供了與這些方法功能徹底一致的函數,這些函數使用一個模式字符串作爲它們的第一個參數。函數
1. compile 函數spa
在進行正則表達式的計算時,一般咱們先將字符串編譯成pattern實例,而後在進行匹配的操做,以後在進行其餘的操做code
而compile()函數就是用來建立pattern實例的
對象
例子:字符串
#!/usr/bin/env python # -*- coding: UTF-8 -*- __author__ = '217小月月坑' ''' compile()函數的使用 1. 將正則表達式編譯成pattern對象 2. 建立一個變量用來存放要尋找的字符串 3. 使用re模塊裏面的函數進行相對應的操做 ''' import re # 1. abc是正則表達式,將他編譯成pattern對象 pattern = re.compile(r'abc') # 2. str變量用來存放被查找的字符串 str = 'abcdefghigk' # 3. 使用re.match 函數查找,並將結果保存在result變量中 result = re.match(pattern,str) # 4. 若是成功匹配則打印該結果,不成功輸出相應信息 if result: print (result.group()) else: print 'not match'
2. 經常使用到的re模塊string
1. re.compile(pattern, flags=0)it
編譯正則表達式,返回pattern對象,而後能夠經過pattern對象調用其餘方法
2. re.search(pattern, string, flags=0)
在字符串中查找,是否能匹配正則表達式。成功返回匹配到的內容,若是不能匹配返回None
3. re.match(pattern, string, flags=0)
字符串的開頭是否能匹配正則表達式。成功返回匹配到的內容,若是不能匹配返回None
注意:match只是匹配字符串的開頭,而search匹配整個字符串
4. re.split(pattern, string, maxsplit=0)
經過正則表達式將字符串分離。maxsplit是分離的次數,maxsplit=1分離一次,默認爲0,不限制次數
1. 若是用括號將正則表達式括起來,那麼匹配的字符串也會被列入到list中返回
例子:\W+ 是匹配費字母數字
>>> import re
>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
2. 若是在字符串的開始或結尾就匹配,返回的list將會以空串開始或結尾
>>> re.split('(\W+)', '...words, words...')
['', '...', 'words', ', ', 'words', '...', '']
3. 若是字符串不能匹配,將會返回整個字符串的list
>>> re.split("a","bbb")
['bbb']
5. re.findall(pattern, string, flags=0)
找到匹配的全部子串,並把它們做爲一個列表返回。這個匹配是從左到右有序地返回。若是無匹配,返回空列表
>>> re.findall("a","bcdef")
[]
>>> re.findall(r"\d+","12a32bc43jf3")
['12', '32', '43', '3']
6. re.finditer(pattern, string, flags=0)
找到匹配的全部子串,並把它們做爲一個迭代器返回。這個匹配是從左到右有序地返回。若是無匹配,返回空列表。
>>> it = re.finditer(r"\d+","12a32bc43jf3")
>>> for match in it:
print match.group()
12
32
43
3
7. re.sub(pattern, repl, string, count=0, flags=0)
找到 RE 匹配的全部子串,並將其用一個不一樣的字符串替換。可選參數 count 是模式匹配後替換的最大次數;
count 必須是非負整數。缺省值是 0 表示替換全部的匹配。若是無匹配,字符串將會無改變地返回。
8. re.subn(pattern, repl, string, count=0, flags=0)
與re.sub方法做用同樣,但返回的是包含新字符串和替換執行次數的兩元組
9. re.escape(string)
對字符串中的非字母數字進行轉義
10. re.purge()
清空緩存中的正則表達式
3. 關於 flags
上面列舉的不少函數都有flags這個參數,flags是正則表達式修飾符,他是一個可選標誌
正則表達式能夠包含一些可選標誌修飾符來控制匹配的模式。修飾符被指定爲一個可選的標誌。
多個標誌能夠經過按位 OR(|) 它們來指定。如 re.I | re.M 被設置成 I 和 M 標誌:
各修飾符的含義以下
re.I 使匹配對大小寫不敏感
re.L 作本地化識別(locale-aware)匹配
re.M 多行匹配,影響 ^ 和 $
re.S 使 . 匹配包括換行在內的全部字符
re.U 根據Unicode字符集解析字符。這個標誌影響 \w, \W, \b, \B.
re.X 該標誌經過給予你更靈活的格式以便你將正則表達式寫得更易於理解。