Python爬蟲學習必備知識點:正則表達式模塊詳解

2022-01-10 Python教程入門學習

一、基礎語法總結

1.1、匹配單個字符

a . d D w W s S [...] [^...]

匹配單個字符(.)

規則:匹配除換行之外的任意字符

In [24]: re.findall("f.o","foo is not fao")

Out[24]: ['foo', 'fao']

匹配任意(非)數字字符(d D)

d [0-9]

D [^0-9]

匹配任意(非)普通字符(w W)

w 普通字符 包括[_0-9A-Za-z] 同時也包括漢字

W 非普通字符

匹配任意(非)空字符(s S)

s 匹配任意空字符 [

]

S 匹配任意非空字符

匹配字符集合([...])

[A-Z][a-z][0-9][_123a-z]

匹配字符集([^...])

規則:字符集取非,除列出的字符之外的任意一個字符

[^abc] --> 除a b c之外任意字符

1.2、匹配多個字符

* 匹配0次或者多次

+ 匹配1次或者多次

? 匹配0次或者1次

匹配m次

匹配m次到n次區間內的任意一次

1.3、匹配位置

^ 匹配開始位置

$ 匹配結束位置

A 匹配開始位置

Z 匹配結束位置

匹配單詞邊界位置(一般用於首字母大寫的匹配)

B 匹配非單詞邊界問題

1.4、轉義

在正則表達式中有一類特殊字符需要轉移,只需要在特殊字符之間加上 表示轉移即可

. * + ? ^ $ [] {} () |

1.5、子組

使用() 可以為正則表達式建立內部分組,子組為正則表達式的一部分,可以看做一個內部整體。

In [61]: re.search(r"(https|http|ftp)://w+.w+.(com|cn)","https://www.baidu.com").group(0)

Out[61]: 'https://www.baidu.com'

In [62]: re.search(r"(https|http|ftp)://w+.w+.(com|cn)","https://www.baidu.com").group(1)

Out[62]: 'https'

1.6、貪婪模式和非貪婪模式

正則表達式的重複匹配總是儘可能多的向後匹配更多的內容。貪婪模式包括:* + ?

非貪婪模式:儘可能少的匹配內容 貪婪模式轉換為非貪婪模式:*? +? ?? ?

In [106]: re.findall(r"ab+?","abbbbbbbb")

Out[106]: ['ab']

In [107]: re.findall(r"ab??","abbbbbbbb")

Out[107]: ['a']

二、Re模塊

接下來我所有函數裡面的參數解釋如下:

pattern:正則表達式

string:目標字符串

pos:截取目標字符串起始位置

endpose:截取目標字符串結束位置

flags:功能標誌

replaceStr:替換的字符串

max:最多替換幾處(默認替換全部)

有上圖我們看出來,接下來我們要將的Python中re模塊、regex對象、match對象三者之間是存在一定關係的。

1、re模塊的compile方法返回一個regex對象

2、re模塊和regex對象的finditer()、fullmatch()、match()、search()等方法返回一個match對象

3、他們分別有自己的屬性和方法

2.1、compile

regex = re.compile(pattern, flags = 0) # 生成正則表達式對象

2.2、findall

re.findall(pattern,string,pos,endpose) # 從目標字符串中匹配所有符合條件的內容

2.3、split

re.split(pattern,string,flags) #根據正則表達式對目標字符串進行分割

In [79]: re.split(r's+',"Hello World")

Out[79]: ['Hello', 'World']

2.4、sub

re.sub(pattern,replaceStr,string,max,flags)

In [80]: re.sub(r's+',"##","hello world")

Out[80]: 'hello##world'

2.5、subn

re.subn(pattern,replaceStr,string,max,flags) #功能同sub,但是返回值返回替換後的字符串和替換了幾處

In [80]: re.sub(r's+',"##","hello world")

Out[80]: ('hello##world',1)

2.6、finditer

re.finditer(pattern,string) #使用正則表達式匹配目標字符串,返回一個match對象,match對象調用group()之後才能拿到值

In [87]: it = re.finditer(r'd+',"2014nianshiqiqngduo 08aoyun 512dizhen")

In [88]: for i in it:

....: print(i)

....:

In [93]: it = re.finditer(r'd+',"2014nianshiqiqngduo 08aoyun 512dizhen")

In [94]: for i in it:

....: print(i.group())

....:

2014

08

512

2.7、fullmatch

fullmatch(pattern,string,flags) #完全匹配目標字符串,相當於加了^ 和 $

2.8、match

re.match(pattern,string,flags) #匹配目標字符串開頭的位置

2.9、search

re.search(pattern,string,flags) # 正則表達式匹配目標字符串,只匹配第一處

三、一些練習題

3.1、匹配首字母大寫的單詞

import re

f = open('test.txt')

pattern= r'[A-Z][a-zA-Z]*s*'

# pattern= r'[A-Z]S'

L = []

for i in f:

L += re.findall(pattern,i)

print(L)

test.txt文檔內容如下:

Hello World -12.6

Nihao 123

How are you -12

1.24

asdk 34%,

佔比 1/2

2003 - 2005./%

3.2、匹配數字(正數、負數、小數、百分數、分數)

import re

pattern = "-?d+((/?d+)|((.)?d+)|((%)?))"

f = open('test.txt')

l = []

for line in f:

l += re.finditer(pattern,line)

for i in l:

print(i.group())

希望大家可以多多關注,評論,轉發,收藏,您的支持是對小編最大的鼓勵!

想要擁有更加牛逼的技巧嗎?

想要了解最新的行業信息嗎?

想要獲得老師的經驗分享嗎?

目前10000+人已加入我們

       

       

現在點擊閱讀全文報名,即享0元課程優惠!快來搶購吧

領取福利加助理夢雅微信:762459510   備註:聽課

點擊下方,領取課程

掃碼二維碼領取Python、爬蟲、自動化學習基礎入門實戰試學課程+課程諮詢+福利領取!



相關焦點

  • Python之re模塊方法詳解(正則表達式)
    學習re模塊首先要對python正則表達式要了解,正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配
  • 強勢來襲,Python爬蟲之正則表達式!
    我們的《從零開始學爬蟲》專欄發布後,目前已經更新了三篇:今天我們來介紹一個在爬蟲中非常重要的工具:正則表達式。正則表達式是一個特殊的符號系列,它能夠幫助開發人員檢查一個字符串是否與某種模式匹配。本篇文章涉及以下內容:正則表達:學會正則表達式的常用符號。
  • 妙用正則表達式--Python中的re模塊
    Python中的re模塊可以方便地引入正則表達式。利用正則表達式,我們可以對文本內容進行精確快捷地匹配和提取。與Stata相比,正則表達式的元字符是通用的,不同的是函數。re庫中有若干個函數各司其職,在上一篇推文《Python標準庫re:正則表達式》中我們介紹了re庫中的三個常用函數,現在小編將從實用的角度再介紹幾個常用的函數。
  • Python中正則表達式模塊詳解
    用來處理字符串,對字符串進行檢索和替換,另外正則在python爬蟲的應用也是相當廣泛!
  • 萬字長文詳解Python正則表達式及re模塊
    本文帶來的是偷學Python第三十一天:Python正則表達式語法及re模塊的使用,其他內容將在近期更新完畢exp) 零寬度負回顧後發斷言,來斷言此位置的前面不能匹配表達式exp,Python中提供的re模塊使Python擁有全部正則表達式的功能!
  • python爬蟲系列(4)- 提取網頁數據(正則表達式、bs4、xpath)
    記錄提取網頁數據(正則表達式、bs4、xpath)一些常用方法和使用樣板。
  • Python爬蟲提取神器,正則表達式(re模塊),全程乾貨!
    python正則表達式(re模塊)什麼是正則表達式正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a到z之間的字母
  • Python3爬蟲(4)--python正則表達式詳細版
    等等,在python中,這些都可以用正則表達式處理函數進行處理。re 模塊使 Python 語言擁有全部的正則表達式功能。使用前導入該模塊:import re1、re.match()函數和re.search()函數,實現字符串的正則匹配match 和 search 只匹配一次,當正則表達式在字符串中匹配到多個結果時,在不指定全部返回的情況下,只返回最先匹配到的第一個結果。
  • 原創通俗易懂的Python的正則表達式,建議收藏
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。
  • Python爬蟲知識點梳理
    回復「1024」有驚喜學任何一門技術,都應該帶著目標去學習,目標就像一座燈塔,指引你前進,很多人學著學著就學放棄了,很大部分原因是沒有明確目標,所以,在你準備學爬蟲前,先問問自己為什麼要學習爬蟲。有些人是為了一份工作,有些人是為了好玩,也有些人是為了實現某個黑科技功能。不過可以肯定的是,學會了爬蟲能給你的工作提供很多便利。
  • Python 正則表達式之 re 模塊
    我是風一,最近經常需要對字符串數據進行處理;為了便於快速處理與查詢;這裡對 Python 正則表達式進行複習,正則表達式是一個特殊的字符序列,它能幫助方便的檢查一個字符串是否與某種模式匹配;文章主要分為兩大類、常用的re模塊函數以及正則表達式的模式,那麼就開始吧!
  • 站長在線Python精講:在Python中使用正則表達式的split()方法分割字符串詳解
    收錄於話題 #python 歡迎你來到站長在線的站長學堂學習Python知識,本文學習的是《在Python中使用正則表達式的split()方法分割字符串詳解》。
  • 推薦|Python 正則表達式 re 模塊簡明筆記
    最簡單的正則表達式就是普通字符串,可以匹配其自身。比如,正則表達式 『hello』 可以匹配字符串 『hello』。中,我們可以使用內置的 re 模塊來使用正則表達式。有一點需要特別注意的是,正則表達式使用 \ 對特殊字符進行轉義,比如,為了匹配字符串 『python.org』,我們需要使用正則表達式 'python\.org',而 Python 的字符串本身也用 \ 轉義,所以上面的正則表達式在 Python 中應該寫成 'python\\.org',這會很容易陷入 \ 的困擾中,因此,我們建議使用 Python 的原始字符串,只需加一個 r 前綴
  • 全網最全的Python爬蟲知識點總結
    什麼是爬蟲。簡單一句話就是代替人去模擬瀏覽器進行網頁操作。爬蟲的作用。為其他程序提供數據源,如搜尋引擎(百度、Google等)、數據分析、大數據等等。爬蟲又分為這分類:分為通用爬蟲(搜尋引擎、聚焦爬蟲(12306搶票) 、增量式網絡爬蟲(Incremental Web Crawler)和深層網絡爬蟲。掌握爬蟲具體要學習哪些知識點了?
  • 三十一、深入Python中的正則表達式
    「@Author:Runsen」正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。Python中則提供了強大的正則表達式處理模塊,即 re 模塊, 為Python的內置模塊。
  • Python模塊學習 ---- re正則表達式
    點擊這段文字: 獲取2020年,最強Python學習資料
  • Python中爬蟲框架或模塊的區別
    Python中爬蟲框架或模塊的區別 (1)爬蟲框架或模塊 Python自帶爬蟲模塊:urllib、urllib2 ; 第三方爬蟲模塊:requests,aiohttp;
  • Python正則表達式總結
    正則表達式 的起源、發展、流派、語法、引擎、優化等相關知識,今天我們主要來學習一下 正則表達式在 Python語言 中的應用!大多數程式語言的正則表達式設計都師從Perl,所以語法基本相似,不同的是每種語言都有自己的函數去支持正則,今天我們就來學習 Python中關於 正則表達式的函數。re模塊主要定義了9個常量、12個函數、1個異常,每個常量和函數豬哥都會通過實際代碼案例講解,讓大家能更直觀的了解其作用!註:為避免出現代碼格式錯亂,豬哥儘量使用代碼截圖演示哦。
  • [Python從零到壹] 四.網絡爬蟲之入門基礎及正則表達式抓取博客案例
    所有文章都將結合案例、代碼和作者的經驗講解,真心想把自己近十年的編程經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵。Python系列整體框架包括基礎語法10篇、網絡爬蟲30篇、可視化分析10篇、機器學習20篇、大數據分析20篇、圖像識別30篇、人工智慧40篇、Python安全20篇、其他技巧10篇。
  • 最全詳解 ! Python正則表達式
    什麼是正則表達式?正則表達式(Regular Expression)通常被用來檢索、替換那些符合某個模式(規則)的文本。此處的Regular即是規則、規律的意思,Regular Expression即「描述某種規則的表達式」之意。