Python 正則表達式


咱們可以使用 urllib 向網頁請求並獲取其網頁數據。可是抓取信息數據量比較大,咱們可能須要其中一小部分數據。對付剛纔的難題,就須要正則表達式出馬了。正則表達式能幫助咱們匹配過濾到咱們須要的數據,但它學習起來很是枯燥無味。你可能會說,我尚未開始想學習正則表達式,你就來打擊我?  莫慌!層層遞進地學習,一步一個腳印地學習,很快就會學會了。對於爬蟲,我以爲學會最基本的符號就差很少了。正則表達式

1 正則表達式

下面是一張關於正則表達式字符的圖,圖片資料來自CSDN。先把圖中字符瞭解清楚,基本上算是入門。微信

2 re 模塊

Python 自1.5版本起經過新增 re (Regular Expression 正則表達式)模塊來提供對正則表達式的支持。使用 re 模塊先將正則表達式填充到 Pattern 對象中,再把 Pattern 對象做爲參數使用 match 方法去匹配的字符串文本。match 方法會返回一個 Match 對象,再經過 Match 對象會獲得咱們的信息並進行操做。下面介紹幾個 re 經常使用的函數。編輯器

2.1 compile 函數

compile 是把正則表達式的模式和標識轉化成正則表達式對象,供 match() 和 search() 這兩個函數使用。它的函數語法以下:函數

  • 第一個參數是pattern,指的正則表達式。學習

  • 第二個參數flags是匹配模式,是個可選參數。可使用按位或’|’表示同時生效,也能夠在正則表達式字符串中指定。匹配模式有如下幾種:url

  • 該方法返回的結果是一個 Pattern 對象。spa

2.2 match 函數

match()函數只在字符串的開始位置嘗試匹配正則表達式,也就是說只有在 0 位置匹配成功的話纔有返回。若是不是開始位置匹配成功的話,match() 就返回 none。它的函數語法以下:.net

  • 第一個參數:匹配的正則表達式3d

  • 第二個參數:要被匹配的字符串code

  • flags 是可選參數,跟 compile 用法類似

  • 匹配成功 re.match 方法返回一個匹配的對象,不然返回None。要想得到匹配結果,既可使用groups()函數獲取一個包含全部字符串的元組(從 1 到 所含的小組號),也可使用group(組號)函數獲取某個組號的字符串。

match 函數用法的示例代碼:

2.3 search 函數

search() 函數是掃描整個字符串來查找匹配,它返回結果是第一個成功匹配的字符串。

參數用法以及返回結果跟match函數用法相同。

search 函數用法的示例代碼:

2.4 findall 函數

findall函數在字符串中搜索子串,並以列表形式返回所有能匹配的全部子串。

參數用法以及返回結果跟match函數用法相同。

findall 函數用法的示例代碼:


做者:猴哥,公衆號:極客猴。愛好讀書,喜歡鑽研技術,夢想成爲文藝青年的IT Boy。

 - END -

極客猴

分享乾貨的公衆號


長按指紋 > 識別圖中二維碼 > 添加關注

本文分享自微信公衆號 - 極客猴(Geek_monkey)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索