Python爬蟲之正則表達式一些常用方法

2021-01-07 一起學python

正則表達式與Python

在了解了正則表達式的相關知識之後,開始查看Python當前如何通過使用re模塊來支持正則表達式,re模塊在很早之前就引入了,用於替換那些已過時的regex模塊和regsub模塊——這兩個模塊在Python2.5版中移除,而且此後導入這兩個模塊中的任意一個都會出發ImportError異常。

re模塊支持更強大而且更通用的Perl風格的正則表達式,該模塊允許多個線程共享同一個已經編譯的正則表達式對象,也支持命名子組。

使用compile( )函數編譯正則表達式

後面我們將要介紹的幾乎所有的re模塊函數都可以作為regex對象的方法。注意,儘管推薦預編譯,但這並不是必須的。如果需要編譯,就使用編譯過的方法:如果不需要編譯,就使用函數。幸運的是,不管使用函數還是方法,它們的名字都是相同的。

對於一些特別的正則表達式編譯,可選的標記可能以參數的形式給出,這些標記允許不區分大小寫的匹配,使用系統的本地化設置來匹配字母數字,等等。

這些標記也可以作為參數適用於大多數re模塊函數。如果想要在方法中使用這些標記,它們必須已經集成到已編譯的正則表達式對象之中,或者需要使用直接嵌入到正則比啊倒是本身的(?F)標記,其中F是一個或者多個i(用於re.I/IGNORECASE)、m(用於re.M/MULTILINE)、s(用於re.S/DOTALL)等。如果想要使用多個,就把它們放在一起而不是使用按位或操作,例如,(?im)可以用於同時表示re.IGNORECASE和re.MULTILINE。

匹配對象以及group( )和groups( )方法

當處理正則表達式時,除了正則表達式對象之外,還有另一個對象類型:匹配對象。這些是成功調用match( )或者search( )返回的對象。匹配對象有兩個主要的方法:group( )和groups( )。

group( )要麼返回整個匹配對象,要麼根據要求返回特定子組。groups( )則僅返回一個包含唯一或者全部子組的元組。如果沒有子組的要求,那麼當group( )仍然返回整個匹配時,groups( )返回一個空元組。

使用match( )方法匹配字符串

match( )方法是將要介紹的第一個re模塊函數和正則表達式對象方法。match( )函數試圖從字符串的起始部分對模式進行匹配。如果匹配成功,就返回一個匹配對象;如果匹配失敗,就返回None,匹配對象的group( )方法能夠用於顯示那個成功的匹配。下面是如何運用match( )方法以及group( )方法的一個實例:

模式「foo」完全匹配字符串「foo」,我們也能夠確認m是交互式解釋器中匹配對象的示例。

我們再來看一個失敗的匹配示例,它返回None:

因為上面的匹配失敗,所以m被賦值為None,而且以此方法構建的if沒有指明任何操作。對於剩餘的示例,如果可以,為了簡單起見,將省去if語句塊,但在實際操作中,最好不要省去以避免AttributeError異常(None是返回的錯誤值,該值並沒有group( )屬性[方法])。

只要模式從字符串的起始部分開始匹配,即使字符串比模式長,匹配也可以成功。例如,模式"foo"將在字符串"food on the table"中找到一個匹配,因為它是從字符串的起始部分進行匹配的。

可以看到,儘管字符串比模式要長,但從字符串的起始部分開始匹配依然會正確。子串"foo"是從那個較長的字符串中抽取出來的匹配部分。

相關焦點

  • Python之re模塊方法詳解(正則表達式)
    學習re模塊首先要對python正則表達式要了解,正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配
  • 妙用正則表達式--Python中的re模塊
    課程通過案例教學模式,旨在幫助大家在短期內掌握Stata軟體編程、金融計量知識和實證分析方法,使大家熟悉Stata核心的爬蟲技術,以及Stata與其他軟體交互的高端技術。Python中的re模塊可以方便地引入正則表達式。利用正則表達式,我們可以對文本內容進行精確快捷地匹配和提取。與Stata相比,正則表達式的元字符是通用的,不同的是函數。re庫中有若干個函數各司其職,在上一篇推文《Python標準庫re:正則表達式》中我們介紹了re庫中的三個常用函數,現在小編將從實用的角度再介紹幾個常用的函數。
  • Python爬蟲:一些常用的爬蟲技巧總結
    也差不多一年多了,python應用最多的場景還是web快速開發、爬蟲、自動化運維:寫過簡單網站、寫過自動發帖腳本、寫過收發郵件腳本、寫過簡單驗證碼識別腳本。catalog=3463517',    headers = headers)print urllib2.urlopen(request).read()5、頁面解析對於頁面解析最強大的當然是正則表達式,這個對於不同網站不同的使用者都不一樣,就不用過多的說明,附兩個比較好的網址:正則表達式入門
  • Python網絡爬蟲之正則表達式(一)
    這就要用到一個十分強大的工具:正則表達式。1 初識正則表達式正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。正則表達式並不是Python的一部分。
  • Python爬蟲提取神器,正則表達式(re模塊),全程乾貨!
    python正則表達式(re模塊)什麼是正則表達式正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a到z之間的字母
  • Python3爬蟲(4)--python正則表達式詳細版
    前言正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。它能幫助你方便的檢查一個字符串是否與某種模式匹配。最常見的郵箱規則模式:[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(.[a-zA-Z0-9]+),什麼意思呢?
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。2.星號「*」一個星號可以表示它前面的一個子表達式(普通字符、另一個或幾個正則表達式符號)0次到無限次。3.問號「?」問號表示它前面的子表達式0次或者1次。注意,這裡的問號是英文問號。
  • Python 正則表達式
    最簡單的正則表達式就是普通字符串,可以匹配其自身。比如,正則表達式 『hello』 可以匹配字符串 『hello』。要注意的是,正則表達式並不是一個程序,而是用於處理字符串的一種模式,如果你想用它來處理字符串,就必須使用支持正則表達式的工具,比如 Linux 中的 awk, sed, grep,或者程式語言 Perl, Python, Java 等等。
  • 【Python】一文讀懂Python正則表達式常用用法
    最簡單的正則表達式就是普通字符串,可以匹配其自身。比如,正則表達式 『hello』 可以匹配字符串 『hello』。要注意的是,正則表達式並不是一個程序,而是用於處理字符串的一種模式,如果你想用它來處理字符串,就必須使用支持正則表達式的工具,比如 Linux 中的 awk, sed, grep,或者程式語言 Perl, Python, Java 等等。
  • 原創通俗易懂的Python的正則表達式,建議收藏
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。
  • 5分鐘完全掌握正則表達式
    最常用的知識點,那應該就是正則表達式了。</h1>', html)print(content)#result [' test1 ', ' test2 ', ' test3 ']那正則表達式到底是什麼,又該如何使用,為什麼我們爬蟲中老是使用(.*?),它到底起到了什麼作用,這篇文章就詳細告訴你。
  • Python中正則表達式模塊詳解
    用來處理字符串,對字符串進行檢索和替換,另外正則在python爬蟲的應用也是相當廣泛!
  • Python 爬蟲:8 個常用的爬蟲技巧總結!
    用python也差不多一年多了,python應用最多的場景還是web快速開發、爬蟲、自動化運維:寫過簡單網站、寫過自動發帖腳本、寫過收發郵件腳本
  • Python爬蟲之正則表達式中的元字符
    使用擇一匹配符號匹配多個正則表達式模式表示擇一匹配的管道符號(|),也就是鍵盤上的豎線,表示一個「從多個模式中選擇其一」的操作。它用於分割不同的正則表達式。例如,在下面的表中,左邊是一些運用擇一匹配的模式,右邊是左邊相應的模式所能夠匹配的字符。有了這個符號,就能夠增強正則表達式的靈活性,使得正則表達式能夠匹配多個字符串,而不僅僅只是一個字符。
  • Python網絡爬蟲之正則表達式(二)
    1 re模塊Python通過re模塊提供對正則表達式的支持,使用re的一般步驟是先將正則表達式的字符串形式編譯為Pattern實例,然後使用Pattern實例處理文本並獲得匹配結果(一個Match實例),最後使用Match實例獲得信息,進行其他的操作。
  • Python正則表達式急速入門
    正則表達式在程序開發中會經常用到,比如數據(格式)驗證、替換字符內容以及提取字符串內容等等情況都會用到,但是目前許多開發人員對於正則表達式只是處於了解或者是基本會用的階段。一旦遇到大批量使用正則表達式的情況(例如網絡爬蟲)可以說基本上就抓瞎了。這篇文章我將帶領大家利用 Python 來學習一下正則表達式。
  • Python正則表達式總結
    正則表達式 的起源、發展、流派、語法、引擎、優化等相關知識,今天我們主要來學習一下 正則表達式在 Python語言 中的應用!可以在這裡查看Python所有的內置模塊:https://docs.python.org/3/py-modindex.html#cap-r因為re是內置模塊,所以不需要再下載,使用時直接引入即可:re模塊官方文檔:https://docs.python.org/zh-cn/3.8/library/re.htmlre模塊庫源碼:https://github.com/python/cpython/blob
  • 萬字長文詳解Python正則表達式及re模塊
    這種通配符,如果想要在某個目錄下找到自己寫的筆記,小甜最常用的方法就是*.md就可以找到當前文件夾下所有的Markdown文件了;正則表達式可以理解為超複雜的通配符,可以比通配符匹配的更為精準,正規一點的說法就是使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。
  • Python開發簡單爬蟲【學習資料總結】
    Python網頁解析器 正則表達式 html.parser Beautiful Soup lxml 後面三種是以結構化解析的方式進行解析DOM(Document Object Model
  • Python:正則表達式基本符號總結
    字符串是我們在編程的時候很常用的一種數據類型,檢查會在字符串裡面查找一些內容,對於比較簡單的查找,字符串裡面就有一些內置的方法可以處理,對於比較複雜的字符串查找,或者是有一些內容經常變化的字符串裡面查找,那麼字符串內置的查找方法已經不好使了,滿足不了我們的要求,這個時候就得用正則表達式了,正則表達式就是用來匹配一些比較複雜的字符串。