首頁技術(shù)文章正文

使用compile()函數(shù)編譯正則表達式【Python技術(shù)文章】

更新時間:2021-01-28 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

如果需要對一個正則表達式重復(fù)使用,那么可以使用compile()函數(shù)對其進行預(yù)編譯,以避免每次編譯正則表達式的開銷。complie()函數(shù)語法格式如下:

compile(pattern, flags=0)

上述格式中的參數(shù)pattern表示一個正則表達式,參數(shù)flags用于指定正則匹配的模式,該參數(shù)的常用取值如表1所示。

表11-1 常用的匹配模式

flags說明
re.I忽略大小寫
re.L做本地化識別(locale-aware)匹配,使預(yù)定義字符集\w、\W、\b、\B、\s、\S取決于當前區(qū)域設(shè)定
re.M多行匹配,影響^和$
re.S使.匹配所有字符,包括換行符
re.U根據(jù)Unicode字符集解析字符
re.A根據(jù)ASCII字符集解析字符
re.X允許使用更靈活的格式(可以是多行、忽略空白字符、可加入注釋)書寫正則表達式,以便表達式更易理解

complie()函數(shù)的用法如下所示:

import re
regex_obj = re.compile(r'\d')

以上第2行代碼中,通過compile()函數(shù)將正則的匹配模式“\d”預(yù)編譯為正則對象regex_obj。

假設(shè)當前有一組字符串“Today is March 28, 2019.”,通過正則對象regex_obj的findall()方法就可以查找到所有的匹配結(jié)果,示例代碼如下:

words = 'Today is March 28, 2019.'
print(regex_obj.findall(words))

以上示例中的findall()函數(shù)用于獲取目標文本中所有符合條件的內(nèi)容。

運行代碼,結(jié)果如下所示:

['2', '8', '2', '0', '1', '9']
如果想要匹配一組字符串中所有的英文字母,可通過設(shè)置flags參數(shù)忽略英文字母的大小寫,具體代碼如下:
import re
regex_one = re.compile(r'[a-z]+', re.I)
words = 'Today is March 28, 2019.'
print(regex_one.findall(words))

上述代碼中的匹配模式“[a-z]+”表示匹配最少匹配一次小寫英文字母,當設(shè)置flags參數(shù)為re.I后該匹配模式便會忽略英文字母的大小寫,匹配結(jié)果將會包含字符串words中的所有英文字母。

運行代碼,結(jié)果如下所示:

['Today', 'is', 'March']




猜你喜歡:

Python中的遞歸函數(shù)【python培訓(xùn)】

python函數(shù)是什么,怎么用?【python培訓(xùn)】

Python轉(zhuǎn)換數(shù)據(jù)類型的函數(shù)有哪些?

黑馬程序員Python數(shù)據(jù)分析培訓(xùn)

分享到:
在線咨詢 我要報名
和我們在線交談!