按照之前的課程安排珠闰,此次課程應(yīng)該講python基礎(chǔ)第十六講爬蟲惜浅,但是如果正則一筆帶過(guò)大家可能還是沒(méi)辦法寫出自己想要實(shí)現(xiàn)的結(jié)果,所以把正則匹配詳解提前學(xué)習(xí)一下伏嗜,此次課程的學(xué)習(xí)路線會(huì)翻譯官方的re模塊文檔坛悉,并且篩選出重點(diǎn)知識(shí),完善文章中沒(méi)有的DEMO承绸。
學(xué)完此次課程裸影,我能做什么?
此次課程我們會(huì)系統(tǒng)的學(xué)習(xí)一下python的正則表達(dá)式军熏,以及可以根據(jù)自己的需求寫出正確的正則表達(dá)式轩猩。
學(xué)習(xí)此次課程,需要多久荡澎?
15-20分鐘均践,建議每個(gè)表達(dá)式跟著實(shí)踐一下,加深印象
課程內(nèi)容
Python中正則表達(dá)式 在 re 模塊 — Regular expression operations
Python中的re模塊提供與Perl類似的正則表達(dá)式匹配操作摩幔,但是要注意的是
需要注意的是:正則匹配時(shí) 表達(dá)式和要查詢的字符串可以是 unicode字符串彤委,也可是8-bit 字符串,但是兩種模式不可以混合使用或衡,也就是說(shuō) 表達(dá)式和要查詢的字符串必須一致焦影。
正則表達(dá)式特殊字符:
.(點(diǎn)): 默認(rèn)模式下,.可以匹配除了換行外的所有字符封断,如果需要匹配換行斯辰,可以傳參 re.DOTALL。
運(yùn)行結(jié)果:
^:只匹配字符串的開(kāi)始位置坡疼,可以使用re.MULTILINE(匹配多行)彬呻,匹配每一行的開(kāi)始位置。
代碼中每一行的開(kāi)頭都有ae字符串,所以開(kāi)啟多行模式后废岂,會(huì)匹配兩個(gè)結(jié)果祖搓。
運(yùn)行結(jié)果:
$ : 與^相反,匹配字符串的結(jié)束位置湖苞,可以使用re.MULTILINE(匹配多行)拯欧,匹配每一行的結(jié)尾位置。
運(yùn)行結(jié)果:
- : 匹配0個(gè)或多個(gè)的表達(dá)式
運(yùn)行結(jié)果:
分析:c*表示财骨,匹配字符"c"0次或者多次镐作,也就是說(shuō)會(huì)匹配 a,ac。
- : 匹配1個(gè)或多個(gè)的表達(dá)式
運(yùn)行結(jié)果:
分析:匹配字符a并且c一次或者多次隆箩,所以會(huì)匹配ac或者accccc
? : 匹配0次或1次该贾,非貪婪方式
運(yùn)行結(jié)果:
分析:表達(dá)式“ac?” 匹配字符a或者ac(?只匹配0次或者1次捌臊,比較懶惰杨蛋,不像上面的+或者*會(huì)匹配多次)
.? : 這三個(gè)特殊符號(hào)上面都講過(guò)了,.是匹配任意字符匹配0次或者多次理澎,連在一起使用也就是匹配全文了逞力,加上?號(hào)糠爬,非貪婪模式匹配寇荧,將盡可能少的匹配結(jié)果。
匹配結(jié)果:
小結(jié)
正則匹配的語(yǔ)法是通用的执隧,大家學(xué)會(huì)這些特殊字符揩抡,無(wú)論什么語(yǔ)言都能迅速入門。所以有必要好好學(xué)習(xí)一下镀琉。
接下來(lái)學(xué)習(xí)什么峦嗤?
Python的基礎(chǔ)教程暫時(shí)告一段落。