編譯正則表達式-- 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()函數編譯后得到結果。
通過pattern提供的一系列方法可以對文本進行匹配查找
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}
