網絡爬蟲——正則表達式用法及實例

正則表達式

簡單來說,正則表達式就是描述字符串的一套規則。比如,我們想找出一個網頁中的所有URL鏈接,其他的信息需要過濾掉。那麼此時,我們可以觀察鏈接的格式,然後寫一個正則表達式來表示所有的電子郵件。隨後,我們可以利用該表達式從網頁中提取出所有滿足該規則的URL鏈接。正則表達式的功能非常強大,在爬蟲的實際項目中,對於處理特定格式的信息,經常需要用到正則表達式。

在Python中,可以使用re模塊來實現Python正則表達式。

一、正則表達式基礎知識

正則表達式學習其實非常簡單,就是有較多的需要記的字符、字符功能。爲了能夠有一個系統的i思維去把握正則,我將會從原子、元字符、模式修正符與懶惰模式等方面介紹。

  1. 原子
    原子——正則表達式中最基本的單位(普通字符、非打印字符、通用字符、原子表)

    普通字符
    數字、大小寫字母、下劃線等都可作爲原子使用。

    非打印字符

    符號 含義
    \n 用於匹配一個換行符
    \t 用於匹配一個製表符

    通用字符

    符號 含義
    \w 匹配任意一個字母、數字或下劃線
    \W 匹配除字母、數字或下劃線以外的任意一個字符
    \d 匹配任意一個十進制數
    \D 匹配除十進制數以外的任意一個字符
    \s 匹配任意一個空白字符
    \S 匹配除空白字符以外的任意一個字符

    原子表
    可以定義一組地位平等的原子,然後匹配的時候會取該原子表中的任意一個原子進行匹配。在Python中,原子表由[]來表示,如[xyz]就是一個原子表,定義了三個原子,三個原子地位平等。(另注:^xyz表示除原子表以外的任意字符)
    在這裏插入圖片描述

  2. 元字符
    以上是常見原子的使用,一般需要結合元字符才能發揮正則表達式的強大功能。
    元字符,在正則表達式中即具有特殊含義的字符。(另注:| 模式選擇符)

    符號 含義
    . 匹配除換行符以外的任意字符
    ^ 匹配字符串的開始位置
    $ 匹配字符串的結束位置
    * 匹配0次、1次或多次前面的原子
    + 匹配1次或多次前面的原子
    {n} 前面的原子恰好出現n次
    {n,} 前面的原子至少出現n次
    {n,m} 前面的原子至少出現n次,至多出現m次
    () 模式單元符
  3. 模式修正符
    所謂模式修正符,即在不改變正則表達式的情況下,通過模式修正符改變正則表達式的含義,從而實現一些匹配結果的調整功能。

符號 含義
I 匹配時忽略大小寫(Ignore的首字母)
M 多行匹配(Multiple的首字母)
L 做本地化識別匹配
U 根據Unicode字符及解析字符
S 讓.匹配包括換行符,可以匹配任意字符

在這裏插入圖片描述

  1. 貪婪模式與懶惰模式

    貪婪模式核心:儘可能的多匹配,懶惰模式核心:匹配成功一次就不再匹配。
    貪婪模式在第一次匹配成功後,不會停止,一直到整個待匹配內容的最後。
    懶惰模式在第一次匹配成功後就會停止,就近原則。
    在這裏插入圖片描述

二、正則表達式常用函數

常見的正則表達式函數有 re,match()re,search()全局匹配函數re,sub()

re.match()——源字符串的開頭進行匹配,要求第一個字符就匹配成功
re.search()——全文進行檢索匹配,與match()最大不同是,在全文在進行檢索並匹配
在這裏插入圖片描述
全局匹配函數(re.findall)
需先對正則表達式進行預編譯,pattern=re.compile(".python."),返回的是list集合
在這裏插入圖片描述
re.sub()函數
re.sub(pattern,rep,string,max)——rep:要替換成的字符串,max:可選項,最多替換次數

三、正則表達式實例

對於正則表達式的學習,實戰是最好的方法。當然也需要不斷地積累,做到熟能生巧。

  1. 匹配.com或.cn後綴的URL網址
    實例目的:將一串字符裏面的以.com或.cn爲域名的URL網址匹配出來。
    在這裏插入圖片描述
  2. 匹配電話號碼
    實例目的:將一串字符裏出現的電話號碼信息提取出來。
    在這裏插入圖片描述
  3. 匹配電子郵件
    實例目的:將一串字符裏面出現的電子郵件信息提取出來。
    在這裏插入圖片描述

四、結束語

最後,祝大家都能學有所成!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章