L10:正則表達式基礎(chǔ)

爬蟲常常獲取到html文件,從中提取有效信息的一種方式就是用正則表達式,方法基礎(chǔ)但是強大。
正則表達式就是在字符串中尋找滿足某種條件的子串。將篩選條件表示出來的符號就是正則表達式。
Python內(nèi)置了re模塊,可用其完成正則表達式的匹配。
在re模塊中,常用的有5個函數(shù),match、search、findall、sub、compile。

re.match

re.match(pattern, string, flags=0)

pattern為正則表達式,
string是原始字符串,
flags是匹配模式。
match方法從(且只從)第一個字符開始匹配。
返回一個match對象
可以調(diào)用group、groups、span等函數(shù)。

re.search

與match相類似,只是search不是必須要匹配第一個字符。

re.findall

相當(dāng)于search的升級版。search只能匹配到第一個子串,而findall可以匹配所有子串。

re.sub

re.sub(pattern, repl, string, count=0, flags=0)

參數(shù)多了一個repl
sub是將原字符串中匹到的子串替換為repl

re.compile

re.compile(pattern, flags=0)

對于常用的正則表達式,可以先用compile,得到對象可以調(diào)用match、serach等函數(shù)。

常見問題

1.貪婪匹配
.* 可以匹配任意字符,會盡可能的多匹配字符,所以會導(dǎo)致某些問題。
比如用.(\d)匹配手機號,我們得到的手機號只有一位數(shù)字,因為其它數(shù)字被.匹配了。所以通常用 .*? 來進行非貪婪匹配,把字符留給后面的表達式。

2.匹配換行符
. 默認可以匹配除換行外的所有字符,如果把匹配模式設(shè)置為re.S,則 . 可以匹配換行符。

3.轉(zhuǎn)義字符
比如 ? 表示匹配0個或1個,但如果要匹配字符串中的 ? , 則要進行轉(zhuǎn)義:?。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python中的正則表達式(re) import rere.match #從開始位置開始匹配,如果開頭沒有則無re...
    BigJeffWang閱讀 7,612評論 0 99
  • python的re模塊--細說正則表達式 可能是東半球最詳細最全面的re教程,翻譯自官方文檔,因為官方文檔寫的是真...
    立而人閱讀 23,450評論 4 46
  • 搞懂Python 正則表達式用法 Python 正則表達式 正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一...
    廈熱閱讀 1,793評論 0 2
  • #首先,python中的正則表達式大致分為以下幾部分: 元字符 模式 函數(shù) re 內(nèi)置對象用法 分組用法 環(huán)視用法...
    mapuboy閱讀 1,724評論 0 51
  • 好啦吧! 大家好我來啦!今天太晚了我可能寫的不多大家見諒一下吧。今天一起都挺好的,就是歌詠大賽正在排練中,加油吧!...
    劉婧_閱讀 217評論 0 3

友情鏈接更多精彩內(nèi)容