Python之正規表示式

2021-09-25 15:33:52 字數 4271 閱讀 4755

作用:使用單個字串來描述具有某個特殊規則的匹配模式,有搜尋模式【文字搜尋和文字替換】和匹配模式【根據規則進行匹配指定內容】

使用場景:用於校驗郵箱,手機號,qq號,密碼格式等。爬蟲中可以快速的從網頁**中獲取我們需要的資料

使用原則:嚴格遵守正規表示式的語法。結合str的函式使用,效率不如str自帶的函式

單字元匹配
#----------匹配單個字元與數字---------

'''. 匹配除換行符以外的任意字元

[0123456789] 是字元集合,表示匹配方括號中所包含的任意乙個字元

[good] 匹配good中任意乙個字元

[a-z] 匹配任意小寫字母

[a-z] 匹配任意大寫字母

[0-9] 匹配任意數字,類似[0123456789]

[0-9a-za-z] 匹配任意的數字和字母

[0-9a-za-z_] 匹配任意的數字、字母和下劃線

[^good] 匹配除了good這幾個字母以外的所有字元,中括號裡的^稱為脫字元,表示不匹配集合中的字元

[^0-9] 匹配所有的非數字字元

\d 匹配數字,效果同[0-9]

\d 匹配非數字字元,效果同[^0-9]

\w 匹配數字,字母和下劃線,效果同[0-9a-za-z_]

\w 匹配非數字,字母和下劃線,效果同[^0-9a-za-z_]

\s 匹配任意的空白符(空格,回車,換行,製表,換頁),效果同[ \r\n\t\f]

\s 匹配任意的非空白符,效果同[^ \f\n\r\t]

'''

注意:[ ]:代表只匹配其中的一位字元,不管[ ]有多少個字元,括號裡面是所有需要匹配的字元的集合;- :連線符,表示乙個區間,要保證ascii碼的值都是連續的,其中的內容可以是數字,也可以是字母;\ :表示轉義,使得後面的字母具有特殊含義

邊界匹配

#--------------錨字元(邊界字元)-------------

'''^ 行首匹配,和在裡的^不是乙個意思

$ 行尾匹配

\a 匹配字串開始,它和^的區別是,\a只匹配整個字串的開頭,即使在re.m模式下也不會匹配它行的行首

\z 匹配字串結束,它和$的區別是,\z只匹配整個字串的結束,即使在re.m模式下也不會匹配它行的行尾

\b 匹配乙個單詞的邊界,也就是值單詞和空格間的位置

\b 匹配非單詞邊界

'''

注意:^和$在多行模式下,匹配每一行的行首和行尾;\a和\z:在多行模式下,只匹配第一行的行首和行尾

數量詞

#-------------------匹配多個字元------------------------

'''說明:下方的x、y、z均為假設的普通字元,n、m(非負整數),不是正規表示式的元字元

(xyz) 匹配小括號內的xyz(作為乙個整體去匹配)

x? 匹配0個或者1個x

x* 匹配0個或者任意多個x(.* 表示匹配0個或者任意多個字元(換行符除外))

x+ 匹配至少乙個x

x 匹配確定的n個x(n是乙個非負整數)

x 匹配至少n個x

x 匹配至少n個最多m個x。注意:n <= m

x|y |表示或,匹配的是x或y

'''

注意:():代表的是乙個整體;?*+:匹配多個;{}:表示數量匹配,符合條件的字元能夠出現幾次

匹配分組 正則1|正則2 :或,只要其中任意乙個正規表示式滿足,則直接按照這個條件進行查詢;():整體  

子模式 在正規表示式**現\1,\2等識別符號的時候,\1,\2被稱作是子模式,\1表示從左到右第乙個匹配到的()

貪婪和非貪婪 匹配一位和多位的區別;+ * :匹配多次【貪婪匹配】;?:0次或者1次【非貪婪匹配】,可以在+和*後面新增,將貪婪匹配轉換為非貪婪匹配。如果乙個正規表示式的前後都有限定條件的時候,那麼則不能將貪婪匹配轉換為非貪婪匹配

模式修正

#-------------------模式修正------------------------

'''re.m 【more】 多行模式

re.i 【ignorecase】 忽略大小寫

re.s 【single】 單行匹配

'''

compile():將正規表示式的字串編譯成為正規表示式物件

match():匹配,如果匹配不上,則返回none,如果能匹配上,則返回的是能匹配上的子字串

search():搜尋,只要匹配到第乙個符合條件的,則停止搜尋

findall():搜尋,返回的結果為列表,返回的是全部匹配到的內容

finditer():返回的結果為迭代器

spilt(pattern,string,maxsplit,flags):分隔,返回的結果為乙個列表,當傳入3個引數的時候,表示只匹配前三個引數,則flags根本沒有起作用

sub() :替換,返回的結果是替換之後的新的字串

subn():替換,返回乙個元組(新的字串,替換的次數)

import re

Python之正規表示式

正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...

Python之正規表示式

正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...

Python之正規表示式

匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...