国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

爬蟲(chóng)之正則表達(dá)式

這篇具有很好參考價(jià)值的文章主要介紹了爬蟲(chóng)之正則表達(dá)式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

個(gè)人主頁(yè):Lei寶啊?

愿所有美好如期而遇


概念:

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern),正則匹配是一個(gè)模糊的匹配(不是精確匹配)

如下四個(gè)方法經(jīng)常使用:

  • match()
  • search()
  • findall()
  • finditer()

匹配單個(gè)字符或數(shù)字:?

匹配 說(shuō)明
. 匹配除換行符以外的任意字符,當(dāng)flags被設(shè)置為re.S時(shí),可以匹配包含換行符以內(nèi)的所有字符
[] 里面是字符集合,匹配[]里任意一個(gè)字符
[0123456789] 匹配任意一個(gè)數(shù)字字符
[0-9] 匹配任意一個(gè)數(shù)字字符
[a-z] 匹配任意一個(gè)小寫英文字母字符
[A-Z] 匹配任意一個(gè)大寫英文字母字符
[A-Za-z] 匹配任意一個(gè)英文字母字符
[A-Za-z0-9] 匹配任意一個(gè)數(shù)字或英文字母字符
[^lucky] []里的^稱為脫字符,表示非,匹配不在[]內(nèi)的任意一個(gè)字符
^[lucky] 以[]中內(nèi)的某一個(gè)字符作為開(kāi)頭
\d 匹配任意一個(gè)數(shù)字字符,相當(dāng)于[0-9]
\D 匹配任意一個(gè)非數(shù)字字符,相當(dāng)于[^0-9]
\w 匹配字母、下劃線、數(shù)字中的任意一個(gè)字符,相當(dāng)于[0-9A-Za-z_]
\W 匹配非字母、下劃線、數(shù)字中的任意一個(gè)字符,相當(dāng)于[^0-9A-Za-z_]
\s 匹配空白符(空格、換頁(yè)、換行、回車、制表),相當(dāng)于[ \f\n\r\t]
\S 匹配非空白符(空格、換頁(yè)、換行、回車、制表),相當(dāng)于[^ \f\n\r\t]

匹配錨字符

錨字符:用來(lái)判定是否按照規(guī)定開(kāi)始或者結(jié)尾

匹配 說(shuō)明
^ 行首匹配,和[]里的^不是一個(gè)意思
$ 行尾匹配
\A 匹配字符串的開(kāi)始,和^的區(qū)別是\A只匹配整個(gè)字符串的開(kāi)頭,即使在re.M模式下也不會(huì)匹配其他行的行首
\Z 匹配字符串的結(jié)尾,和$的區(qū)別是\Z只匹配整個(gè)字符串的結(jié)尾,即使在re.M模式下也不會(huì)匹配其他行的行尾

限定符

限定符用來(lái)指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配。

有 *? 或?+?或???或?{n}?或?{n,}?或?{n,m}?共6種。

匹配 說(shuō)明
(xyz) 匹配括號(hào)內(nèi)的xyz,作為一個(gè)整體去匹配 一個(gè)單元 子存儲(chǔ)
x? 匹配0個(gè)或者1個(gè)x,非貪婪匹配
x* 匹配0個(gè)或任意多個(gè)x
x+ 匹配至少一個(gè)x
x{n} 確定匹配n個(gè)x,n是非負(fù)數(shù)
x{n,} 至少匹配n個(gè)x
x{n,m} 匹配至少n個(gè)最多m個(gè)x
x|y |表示或的意思,匹配x或y

re模塊中常用函數(shù)

通用flags(修正符)

說(shuō)明
re.I 是匹配對(duì)大小寫不敏感
re.M 多行匹配,影響到^和$
re.S 使.匹配包括換行符在內(nèi)的所有字符

通用函數(shù)

  • 獲取匹配結(jié)果

    • 使用group()方法 獲取到匹配的值

    • groups() 返回一個(gè)包含所有小組字符串的元組(也就是自存儲(chǔ)的值),從 1 到 所含的小組號(hào)。?

match()函數(shù)

  • 原型

    def match(pattern, string, flags=0)
  • 功能

    匹配成功返回 匹配的對(duì)象

    匹配失敗 返回 None

  • 獲取匹配結(jié)果

    • 使用group()方法 獲取到匹配的值

    • groups() 返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。

  • 注意:從第一位開(kāi)始匹配 只匹配一次

  • 參數(shù)

    參數(shù) 說(shuō)明
    pattern 匹配的正則表達(dá)式(一種字符串的模式)
    string 要匹配的字符串
    flags 標(biāo)識(shí)位,用于控制正則表達(dá)式的匹配方式

舉例說(shuō)明:

import re

str1 = '124jfda\n'
str2 = '\n124jfda'

print(re.match(".",str1))
print(re.match(".",str2))
print(re.match(".",str2,re.S))

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

search()函數(shù)

  • 原型

    def search(pattern, string, flags=0)
  • 功能

    掃描整個(gè)字符串string,并返回第一個(gè)pattern模式成功的匹配

    匹配失敗 返回 None

  • 參數(shù)

    參數(shù) 說(shuō)明
    pattern 匹配的正則表達(dá)式(一種字符串的模式)
    string 要匹配的字符串
    flags 標(biāo)識(shí)位,用于控制正則表達(dá)式的匹配方式
  • 注意:

    只要字符串包含就可以

    只匹配一次

  • 示例

    str1 = '124jfda\n'
    str2 = '\n124jfda'
    
    print(re.search(".",str1))
    print(re.search(".",str2))
    print(re.search(".",str2,re.S))

    爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

  • 注意

    與search的區(qū)別

    相同點(diǎn):

    都只匹配一次

    不同點(diǎn):

    • search是在要匹配的字符串中 包含正則表達(dá)式的內(nèi)容就可以
    • match 必須第一位就開(kāi)始匹配 否則匹配失敗

findall()函數(shù)(返回列表)

  • 原型

    def findall(pattern, string, flags=0)
  • 功能

    掃描整個(gè)字符串string,并返回所有匹配的pattern模式結(jié)果的字符串列表

  • 參數(shù)

    參數(shù) 說(shuō)明
    pattern 匹配的正則表達(dá)式(一種字符串的模式)
    string 要匹配的字符串
    flags 標(biāo)識(shí)位,用于控制正則表達(dá)式的匹配方式

?舉例:

import re

str = '13678324489'
print(re.findall("[14]",str))
print(re.findall("1[0-9]",str))
print(re.findall("1[0-9]{10}$",str))
print(re.findall("1[0-9]{9}$",str))

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

貪婪與非貪婪模式

貪婪:? ? ? ?.*

非貪婪:? ?.*?

str = "<b>加粗</b><b>加粗的</b><b>加粗的的</b>"
val1 = re.search('<b>.*</b>',str)  #貪婪
val2 = re.search('<b>.*?</b>',str) #非貪婪

print(val1.group())
print(val2.group())

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

myStr = """
<a >百度</a>
<A >淘寶</A>
<a >電
影網(wǎng)站</a>
<i>我是傾斜1</i>
<i>我是傾斜2</i>
<em>我是傾斜2</em>
"""

#提取網(wǎng)址和名字
lt = re.findall('<a href="(.*?)">(.*?)</a>',myStr,re.S|re.I)
print(lt)

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

finditer()函數(shù)

  • 原型

    def finditer(pattern, string, flags=0)
  • 功能

    與findall()類似,返回一個(gè)迭代器

  • 參數(shù)

    參數(shù) 說(shuō)明
    pattern 匹配的正則表達(dá)式(一種字符串的模式)
    string 要匹配的字符串
    flags 標(biāo)識(shí)位,用于控制正則表達(dá)式的匹配方式

?舉例:

import re

ret = re.finditer('\d', '12456789')
print(ret)
print(next(ret))

for i in ret:
    print(i)

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

split()函數(shù)(返回值為列表)

  • 作用:切割字符串

  • 原型:

    def split(patter, string, maxsplit=0, flags=0)
  • 參數(shù)

    pattern 正則表達(dá)式

    string 要拆分的字符串

    maxsplit 最大拆分次數(shù) 默認(rèn)拆分全部

    flags 修正符

示例:

import re

myStr = "asdas\rd&a\ts12d\n*a3sd@a_1sd"
#通過(guò)特殊字符 對(duì)其進(jìn)行拆分 成列表

#非字母拆分
res = re.split("[^a-z]",myStr)
print(res)

res = re.split("\W",myStr)
print(res)

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

正則高級(jí)

分組&起名稱

  • 概念

    處理簡(jiǎn)單的判斷是否匹配之外,正則表達(dá)式還有提取子串的功能,用()表示的就是要提取的分組

  • 說(shuō)明

    • 正則表達(dá)式中定義了組,就可以在Match對(duì)象上用group()方法提取出子串來(lái)
    • group(0)永遠(yuǎn)是原始字符串,group(1)、group(2)……表示第1、2、……個(gè)子串

示例:

import re

s = '3G4HFD567'

#格式:?P<別名>  ()里內(nèi)容表示要提取的分組
x = re.match("(?P<value>\d+)",s)
print(x.group(0))
print(x.group('value'))

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

編譯

  • 概念

    當(dāng)在python中使用正則表達(dá)式時(shí),re模塊會(huì)做兩件事,一件是編譯正則表達(dá)式,如果表達(dá)式的字符串本身不合法,會(huì)報(bào)錯(cuò)。另一件是用編譯好的正則表達(dá)式提取匹配字符串

  • 編譯優(yōu)點(diǎn)

    如果一個(gè)正則表達(dá)式要使用幾千遍,每一次都會(huì)編譯,出于效率的考慮進(jìn)行正則表達(dá)式的編譯,就不需要每次都編譯了,節(jié)省了編譯的時(shí)間,從而提升效率

  • compile()函數(shù)

    • 原型

      def compile(pattern, flags=0)
    • 作用

      將pattern模式編譯成正則對(duì)象

    • 參數(shù)

      參數(shù) 說(shuō)明
      pattern 匹配的正則表達(dá)式(一種字符串的模式)
      flags 標(biāo)識(shí)位,用于控制正則表達(dá)式的匹配方式
    • flags

      說(shuō)明
      re.I 是匹配對(duì)大小寫不敏感
      re.M 多行匹配,影響到^和$
      re.S 使.匹配包括換行符在內(nèi)的所有字符
    • 返回值

      編譯好的正則對(duì)象

示例:

import re

str = '123456'
pattern = re.compile("\d")
print(pattern.search(str))

爬蟲(chóng)之正則表達(dá)式,Python(語(yǔ)法,爬蟲(chóng),數(shù)據(jù)分析),正則表達(dá)式

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828651.html

到了這里,關(guān)于爬蟲(chóng)之正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python爬蟲(chóng)之正則表達(dá)式解析實(shí)戰(zhàn)

    python爬蟲(chóng)之正則表達(dá)式解析實(shí)戰(zhàn)

    先獲取網(wǎng)址,URL:https://www.xiachufang.com/category/40076/ 定位想要爬取的內(nèi)容 使用正則表達(dá)式爬取 導(dǎo)入模塊 指定URL UA偽裝(模擬瀏覽器) 發(fā)起請(qǐng)求,獲取當(dāng)前頁(yè)面的數(shù)據(jù)內(nèi)容,并使用通用爬蟲(chóng)爬取整個(gè)頁(yè)面 編譯正則表達(dá)式(提取想要的內(nèi)容) 解析請(qǐng)求內(nèi)容 指定圖片存儲(chǔ)路徑 持

    2024年02月08日
    瀏覽(19)
  • 【python】網(wǎng)絡(luò)爬蟲(chóng)與信息提取--正則表達(dá)式

    【python】網(wǎng)絡(luò)爬蟲(chóng)與信息提取--正則表達(dá)式

    ? ? ? ? 正則表達(dá)式是用來(lái)簡(jiǎn)潔表達(dá)一組字符串的表達(dá)式。是通用的字符串表達(dá)框架,簡(jiǎn)潔表達(dá)一組字符串的表達(dá)式,針對(duì)字符串表達(dá)“簡(jiǎn)潔”和“特征”思想的工具,判斷某字符串的特征歸屬。 ? ? ? ? 用處:表達(dá)文本類型的特征;同時(shí)查找或替換一組字符串;匹配字符串

    2024年02月19日
    瀏覽(24)
  • 〖Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)⑨〗- 正則表達(dá)式基本原理

    訂閱:新手可以訂閱我的其他專欄。免費(fèi)階段訂閱量1000+? ????????????????python項(xiàng)目實(shí)戰(zhàn) ????????????????Python編程基礎(chǔ)教程系列(零基礎(chǔ)小白搬磚逆襲) 說(shuō)明:本專欄持續(xù)更新中,目前專欄免費(fèi)訂閱,在轉(zhuǎn)為付費(fèi)專欄前訂閱本專欄的,可以免費(fèi)訂閱付費(fèi)專欄,

    2023年04月15日
    瀏覽(23)
  • 《Python數(shù)據(jù)分析技術(shù)?!返?3章 01 正則表達(dá)式(Regular expressions)

    《Python數(shù)據(jù)分析技術(shù)?!返?3章 01 正則表達(dá)式(Regular expressions) A regular expression is a pattern containing both characters (like letters and digits) and metacharacters (like the * and $ symbols). Regular expressions can be used whenever we want to search, replace, or extract data with an identifiable pattern, for example, dates, posta

    2024年01月20日
    瀏覽(18)
  • Java 之正則表達(dá)式語(yǔ)法及常用正則表達(dá)式匯總

    Java 之正則表達(dá)式語(yǔ)法及常用正則表達(dá)式匯總

    正則表達(dá)式,又稱規(guī)則表達(dá)式。(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫為 regex、regexp 或 RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。 正則表達(dá)式是對(duì)字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱

    2024年02月09日
    瀏覽(31)
  • 【100天精通python】Day23:正則表達(dá)式,基本語(yǔ)法與re模塊詳解示例

    ? 目錄 ?專欄導(dǎo)讀? 1?正則表達(dá)式概述 2 正則表達(dá)式語(yǔ)法 2.1?正則表達(dá)式語(yǔ)法元素

    2024年02月14日
    瀏覽(50)
  • 正則表達(dá)式的常見(jiàn)語(yǔ)法

    ?????? 目錄 一、基本的正則表達(dá)式語(yǔ)法 1.1 字符類 1.2?單個(gè)字符的特殊表示 1.3 量詞表示 ?1.4?邊界匹配 1.5?分組與捕獲 ?二 、java中的使用 ??在Java中使用正則表達(dá)式進(jìn)行字符串匹配可以說(shuō)是一個(gè)很重要的技能,尤其對(duì)于需要進(jìn)行文本處理或者字符替換的程序來(lái)說(shuō),更是必

    2024年04月28日
    瀏覽(48)
  • Java 正則表達(dá)式【基本語(yǔ)法】

    首先我們需要了解的是正則表達(dá)式中的各種元字符的功能,主要分為以下幾種: 限定符 選擇匹配符 分組組合和反向引用符 特殊字符 字符匹配符 定位符 需要注意的是:在 Java正則表達(dá)式中,兩個(gè)斜杠 \\\\ 相當(dāng)于其它語(yǔ)言中的一個(gè)斜杠 。 符號(hào) 含義 示例 解釋 [ ] 可以匹配的字

    2024年02月13日
    瀏覽(16)
  • 《零基礎(chǔ)入門學(xué)習(xí)Python》第060講:論一只爬蟲(chóng)的自我修養(yǎng)8:正則表達(dá)式4

    《零基礎(chǔ)入門學(xué)習(xí)Python》第060講:論一只爬蟲(chóng)的自我修養(yǎng)8:正則表達(dá)式4

    有了前面幾節(jié)課的準(zhǔn)備,我們這一次終于可以真刀真槍的干一場(chǎng)大的了,但是呢,在進(jìn)行實(shí)戰(zhàn)之前,我們還要講講正則表達(dá)式的實(shí)用方法和擴(kuò)展語(yǔ)法,然后再來(lái)實(shí)戰(zhàn),大家多把持一會(huì)啊。 我們先來(lái)翻一下文檔: 首先,我們要舉的例子是講得最多的 search() 方法,search() 方法

    2024年02月15日
    瀏覽(26)
  • 正則表達(dá)式和爬蟲(chóng)

    正則表達(dá)式和爬蟲(chóng)

    目錄 一、正則表達(dá)式: ? ? ? ? 作用: 字符類(只匹配一個(gè)字符) ? ? ? ? ? ? ? ? 細(xì)節(jié) 預(yù)定義字符字符(只匹配一個(gè)字符) ? ? ? ? ? ? ? ? 細(xì)節(jié) 數(shù)量詞 二、爬蟲(chóng) ? ? ? ? Pattern ? ? ? ? Matcher ? ? ? ? ? ? ? ? 要點(diǎn)說(shuō)明 ? ? ? ? ? ? ? ? 1、校驗(yàn)字符串是否滿足規(guī)則

    2024年01月17日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包