python正則表達式(2)--編譯正則表達式re.compile

 編譯正則表達式-- re.compile

使用re的通常步驟是先將正則表達式的字符串形 式編譯爲pattern實例,而後使用pattern實例處理文本並獲取匹配結果(一個Match實例(值爲True)),最後使用Match實例獲取信息,進行其餘的操做。正則表達式

能夠把那些常用的正則表達式編譯成正則表達式對象,能夠提升程序的執行速度。一處編譯,多出複用函數

re.compile(pattern, flags=0)

第二個參數flag是匹配模式,取值能夠使用按位或運算符「|」表示同時生效,對象

好比re.I | re.M。固然你也可 以在regex字符串中指定模式。字符串

如下兩種寫法等價:編譯

re.compile('pattern', re.I | re.M)程序

re.compile('(?im)pattern')方法

 

pattern對象屬性及方法

Pattern對象是一個編譯好的正則表達式,也就是經過re.compile()函數編譯後獲得結果。im

經過pattern提供的一系列方法能夠對文本進行匹配查找co

pattern提供了幾個可讀屬性及方法用於處理正則表達式字典

(1)flags屬性

經過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)

(2)groups屬性

該屬性表示獲取表達式中分組的數量。

例:

pattern = re.compile(r'(\w+)(\d)',re.I)

print pattern.groups

>>>2

(3)groupindex屬性

以表達式中有別名的組的別名爲鍵、以該組對應的編號爲值的字典,沒有別名的組不包含在內

p = re.compile(r'(\w+)(?P<sign>.*)', re.DOTALL)

print p.groupindex

>>>{'sign': 2}