使用re的通常步驟是先將正則表達式的字符串形 式編譯爲pattern實例,而後使用pattern實例處理文本並獲取匹配結果(一個Match實例(值爲True)),最後使用Match實例獲取信息,進行其餘的操做。正則表達式
能夠把那些常用的正則表達式編譯成正則表達式對象,能夠提升程序的執行速度。一處編譯,多出複用函數
第二個參數flag是匹配模式,取值能夠使用按位或運算符「|」表示同時生效,對象
好比re.I | re.M。固然你也可 以在regex字符串中指定模式。字符串
如下兩種寫法等價:編譯
re.compile('pattern', re.I | re.M)程序
re.compile('(?im)pattern')方法
Pattern對象是一個編譯好的正則表達式,也就是經過re.compile()函數編譯後獲得結果。im
經過pattern提供的一系列方法能夠對文本進行匹配查找co
pattern提供了幾個可讀屬性及方法用於處理正則表達式字典
經過pattern.flags咱們能夠查看編譯時的選項,該屬性表示獲取編譯時用的匹配模式,以數字形式返回
例:
pattern = re.compile(r'\w+', re.DOTALL)
print pattern.flags
>>>16
經過上面的例子能夠看到,flags返回結果既不是re.S也不是re.DOTALL,而是一個數值16。
其實re.S是一個整數,16就是它的值。re.S 、 re.DOTALL 、 16 三者等價,若是是I,則顯示數值爲2。
編譯正則表達式時,也能夠使用數字指定匹配模式
例:
re.compile(r'\w+', 16)
該屬性表示獲取表達式中分組的數量。
例:
pattern = re.compile(r'(\w+)(\d)',re.I)
print pattern.groups
>>>2
以表達式中有別名的組的別名爲鍵、以該組對應的編號爲值的字典,沒有別名的組不包含在內
p = re.compile(r'(\w+)(?P<sign>.*)', re.DOTALL)
print p.groupindex
>>>{'sign': 2}