最近在MOOC上學習嵩天老師的《Python網(wǎng)絡爬蟲與信息提取》,非常好的一門課程噪服。相比互聯(lián)網(wǎng)上其他爬蟲教程庞钢,這門課的優(yōu)勢在于系統(tǒng)性瞳购。該課程用較短的時間介紹了入門爬蟲的知識點,并輔以實例練習玖绿,幫助學習者快速搭建起一個爬蟲的知識框架敛瓷。
此為正則表達式部分的課程筆記。
正則表達式(regular expression)斑匪,簡稱 regex呐籽,或 RE,是用來簡潔表達一組字符串的表達式秤标,是一種通用的字符串表達框架绝淡。正則表達式可用一行字符串來表達有限或無限個字符串的特征。在網(wǎng)絡爬蟲的過程中苍姜,可以在解析好的網(wǎng)頁文本中搜索滿足一定特征的字符串牢酵。
文中的部分圖片來自嵩天老師的課程課件截圖。
正則表達式的應用范圍很廣闊衙猪,不僅僅用在python中馍乙。因此學習正則表達式的重中之重在于學習正則表達式的常用操作符布近,學會自己按照需要編寫正則表達式語句。本文分為兩個部分丝格。第一個部分介紹正則表達式的基礎語法并輔以一些經(jīng)典實例撑瞧;第二部分介紹python中的RE庫,該庫可以編譯正則表達式語句显蝌,并實現(xiàn)文本查找匹配以及修改的功能预伺。
一、 正則表達式的語法
image.png
正則表達式語句就是由這些操作符組合而成的曼尊。上述操作符右側的實例酬诀,說明了該操作符的簡單用法。在實際應用中骆撇,需要結合實際場景瞒御,通過各種操作符的組合來編寫出正則表達式。以下是一些應用正則表達式的經(jīng)典案例神郊,理解這些案例肴裙,有助于你更好地理解正則表達式操作符的用法。
image.png
二涌乳、 RE庫的使用
RE庫是python中用來解析正則表達式的庫蜻懦。
調用方式:import re
小知識:raw string,是不包含對轉義符再次轉義的字符串爷怀。使用方式為在普通字符串前加個r阻肩,即可忽略字符串中出現(xiàn)的轉義字符。例如:fpath = r"c:\program"
运授,在python中等價于fpath = "c:\\program"
。用此方法使得字符串表達更簡潔乔煞。
image.png
re庫常見函數(shù)解析
re.search(pattern,string,flags=0)
re.match(pattern,string,flags=0)
re.findall(pattern,string,flags=0)
re.split(pattern,string,maxsplit=0,flags=0)
re.finditer(pattern,string,flags=0)
re.sub(pattern,repl, string,count=0,flags=0)
pattern: 正則表達式字符串
string: 待匹配字符串
flags: 正則表達式使用時的控制標記
maxsplit:最大分割次數(shù)限制吁朦,當達到最大分割次數(shù)后,后續(xù)的文本不再分割渡贾。
repl:匹配的字符串
count: 最大替換次數(shù)逗宜,達到此次數(shù)后不再替換。
image.png
RE庫的兩種用法
- 用法一
rst=re.search(r'[1‐9]\d{5}', 'BIT 100081')
- 用法二
pat=re.compile(r'[1‐9]\d{5}') #將正則表達式字符串編譯成正則表達式對象空骚,可重復使用
rst=pat.search('BIT 100081')
image.png
以上是正則表達式對象的方法纺讲,與正則表達式庫函數(shù)的用法類似。