日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具( 四 )


python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


6.其他re.escape(pattern) 可以轉(zhuǎn)義正則表達(dá)式中具有特殊含義的字符,比如:.或者*,舉個(gè)實(shí)際的案例:
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


re.escape(pattern)看似非常好用省去了我們自己加轉(zhuǎn)義,但是使用它很容易出現(xiàn)轉(zhuǎn)義錯(cuò)誤的問題,所以并不建議使用它轉(zhuǎn)義,而建議大家自己手動(dòng)轉(zhuǎn)義!
re.purge 函數(shù)作用就是清除 正則表達(dá)式緩存,具體有什么緩存呢?我們來看看源碼就知道它背地里干了 什么:
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


看方法大概是清除緩存吧,我們再來看看具體的案例:
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


豬哥在兩個(gè)案例之間使用了re.purge函數(shù)清除緩存,然后分別比較前后案例源碼里面的緩存,看看是否有變化!
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


7.總結(jié)同樣,最后來一張思維導(dǎo)圖總結(jié)一下re模塊中的函數(shù)吧,需要高清圖或者xmind文件的同學(xué)可在末尾獲取 。
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具



python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


re模塊異常re模塊還包含了一個(gè)正則表達(dá)式的編譯錯(cuò)誤,當(dāng)我們給出的正則表達(dá)式是一個(gè)無效的表達(dá)式(就是表達(dá)式本身有問題)時(shí),就會(huì)raise一個(gè)異常!
我們來看看具體的案例吧:
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


上圖案例中我們可以看到,在編寫正則表達(dá)式中我們多寫了一個(gè)后括號,這導(dǎo)致執(zhí)行結(jié)果報(bào)錯(cuò);而且是在其他所有案例執(zhí)行之前,所以說明是在正則表達(dá)式編譯時(shí)期就報(bào)錯(cuò)了 。
注意:這個(gè)異常一定是 正則表達(dá)式 本身是無效的,與要匹配的字符串無關(guān)!
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


正則對象Pattern關(guān)于re模塊的常量、函數(shù)、異常我們都講解完畢,但是完全有必要再講講正則對象Pattern 。
1. 與re模塊 函數(shù)一致【python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具】re模塊的函數(shù)中有一個(gè)重要的函數(shù)compile函數(shù),這個(gè)函數(shù)可以預(yù)編譯返回一個(gè)正則對象,此正則對象擁有與re模塊相同的函數(shù),我們來看看Pattern類的源碼 。
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


既然是一致的,那到底該用re模塊還是正則對象Pattern?
而且,有些同學(xué)可能看過re模塊的源碼,你會(huì)發(fā)現(xiàn)其實(shí)compile函數(shù)與 其他re函數(shù)(search、split、sub等等) 內(nèi)部調(diào)用的是同一個(gè)函數(shù),最終還是調(diào)用正則對象的函數(shù)!
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


也就是說下面 兩種代碼寫法底層實(shí)現(xiàn) 其實(shí)是一致的:
# re函數(shù)re.search(pattern, text)# 正則對象函數(shù)compile = re.compile(pattern)compile.search(text)那還有必要使用compile函數(shù)得到正則對象再去調(diào)用search函數(shù)嗎?直接調(diào)用re.search 是不是就可以?
2. 官方文檔怎么說關(guān)于到底該用re模塊還是正則對象Pattern,官方文檔是否有說明呢?
python正則表達(dá)式使用實(shí)例 正則表達(dá)式測試工具


官方文檔推薦:在多次使用某個(gè)正則表達(dá)式時(shí)推薦使用正則對象Pattern以增加復(fù)用性,因?yàn)橥ㄟ^re.compile(pattern)編譯后的模塊級函數(shù)會(huì)被緩存!

推薦閱讀