更新時(shí)間:2021-01-28 來(lái)源:黑馬程序員 瀏覽量:
如果需要對(duì)一個(gè)正則表達(dá)式重復(fù)使用,那么可以使用compile()函數(shù)對(duì)其進(jìn)行預(yù)編譯,以避免每次編譯正則表達(dá)式的開(kāi)銷(xiāo)。complie()函數(shù)語(yǔ)法格式如下:
compile(pattern, flags=0)
上述格式中的參數(shù)pattern表示一個(gè)正則表達(dá)式,參數(shù)flags用于指定正則匹配的模式,該參數(shù)的常用取值如表1所示。
表11-1 常用的匹配模式
flags | 說(shuō)明 |
---|---|
re.I | 忽略大小寫(xiě) |
re.L | 做本地化識(shí)別(locale-aware)匹配,使預(yù)定義字符集\w、\W、\b、\B、\s、\S取決于當(dāng)前區(qū)域設(shè)定 |
re.M | 多行匹配,影響^和$ |
re.S | 使.匹配所有字符,包括換行符 |
re.U | 根據(jù)Unicode字符集解析字符 |
re.A | 根據(jù)ASCII字符集解析字符 |
re.X | 允許使用更靈活的格式(可以是多行、忽略空白字符、可加入注釋?zhuān)?shū)寫(xiě)正則表達(dá)式,以便表達(dá)式更易理解 |
complie()函數(shù)的用法如下所示:
import re regex_obj = re.compile(r'\d')
以上第2行代碼中,通過(guò)compile()函數(shù)將正則的匹配模式“\d”預(yù)編譯為正則對(duì)象regex_obj。
假設(shè)當(dāng)前有一組字符串“Today is March 28, 2019.”,通過(guò)正則對(duì)象regex_obj的findall()方法就可以查找到所有的匹配結(jié)果,示例代碼如下:
words = 'Today is March 28, 2019.' print(regex_obj.findall(words))
以上示例中的findall()函數(shù)用于獲取目標(biāo)文本中所有符合條件的內(nèi)容。
運(yùn)行代碼,結(jié)果如下所示:
['2', '8', '2', '0', '1', '9']如果想要匹配一組字符串中所有的英文字母,可通過(guò)設(shè)置flags參數(shù)忽略英文字母的大小寫(xiě),具體代碼如下:
import re regex_one = re.compile(r'[a-z]+', re.I) words = 'Today is March 28, 2019.' print(regex_one.findall(words))
上述代碼中的匹配模式“[a-z]+”表示匹配最少匹配一次小寫(xiě)英文字母,當(dāng)設(shè)置flags參數(shù)為re.I后該匹配模式便會(huì)忽略英文字母的大小寫(xiě),匹配結(jié)果將會(huì)包含字符串words中的所有英文字母。
運(yùn)行代碼,結(jié)果如下所示:
['Today', 'is', 'March']
Python中的遞歸函數(shù)【python培訓(xùn)】
python函數(shù)是什么,怎么用?【python培訓(xùn)】
怎樣理解Python中的面向?qū)ο螅?/p> 2021-01-28
Python為什么要導(dǎo)入包?包的結(jié)構(gòu)是怎樣的?
2021-01-27網(wǎng)絡(luò)爬蟲(chóng)獲取數(shù)據(jù)的5種方式【Python爬蟲(chóng)】
2021-01-27Python的字符串是什么?怎樣添加字符串?
2021-01-27為什么要進(jìn)行Pandas數(shù)據(jù)預(yù)處理?代碼操作示例
2021-01-18斐波那契數(shù)列是什么?Python如何實(shí)現(xiàn)斐波那契數(shù)列?
2021-01-18