正規表示式與正規表示式常見的函式(python)

2021-09-10 02:19:43 字數 3144 閱讀 4810

乙個正規表示式可以有原子,元字元,模式修政符,貪婪模式,和懶惰模式構成。

1、原子

(1)普通字元作為原子:如數字,大小寫字母,下劃線等。

import re 

pattern = "abc"

string="shuhgabchuh"

result=re.search(pattern,string)//呼叫re模組的search方法來匹配是否有string裡面的字串

print(result)//輸出abc

(2)非列印字元作為原子:即在一些字串中用於格式控制的符號,如換行符

常用的非列印字元

\n:用於匹配乙個換行符

\t:用於匹配乙個製表符

import re 

pattern = "\n"

string="shuhg

abchuh"

result=re.search(pattern,string)

print(result)//最終輸出\n,因為string裡面有個換行符

(3)通用字元作為原子:即乙個原子可以匹配一類字元,在實際中經常應用

\w:匹配任意乙個字母,數字或者下劃線

\w:匹配除字母、數字下劃線以外的任意乙個字元

\d:匹配任意乙個十進位制數

\d:匹配除十進位制數以外的任意乙個其他字元

\s:匹配任意乙個空白字元

\s:匹配除空白字元以外的任意乙個其他字元

例項:

import re 

pattern = "\w\dpython\w" //字元最後是乙個字母或者下劃線,字串前一位是任意乙個十進位制數,再前乙個是任意乙個字母數字或者下劃線

string="hhjkjd234pythony_py"

result=re.search(pattern,string)

print(result) //最終輸出45pythony

(4)原子表:可以自定義一組地位平等的原子,匹配時取該原子表中的任意乙個原子進行匹配,原子由 表示,如 [xyz]就表示乙個原子表。

import re 

pattern = "[\w\dpython[xyz]\w]"

string="dcd345pythony_py"

result=re.search(pattern,string)

print(result) //最終輸出45pythony_

2、元字元

任意匹配元字元

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

邊界限定符

^:匹配字串的開始位置

$:匹配字串的結束位置

限定符

*:匹配0次、一次或多次前面的原子

?:匹配0次或一次前面的原子

+:匹配1次或者多次前面的原子

:前面的原子出現n次

:前面的原子至少出現n次,至多出現m次

模式選擇符

|:模式選擇符

即可以設定多種模式,如"huh|hcuh",則裡面的兩個字串都可以拿來進行匹配

模式單元符

():模式單元符

即將多個原子用()括起來,當成乙個大原子使用。如"(cd)",即匹配時cd這個字串至少出現一次

3、模式修正符

i:匹配時忽略大小寫

m:多行匹配

l:做本地化識別匹配

u:根據unicode字元及解析字元

s:讓.(匹配除換行符以外的任意字元)可以匹配換行符。

4、貪婪模式與懶惰模式

貪婪模式盡可能多的匹配,懶惰模式盡可能少的匹配。

如pattern1=「p.*y」 #貪婪模式,直到找不到y為止

pattern2=「p.?y」 #懶惰模式,找到了第乙個y就結束。

1、re.match()

從源字串的起始位置開始匹配

re.match(pattern,string,flag)
第乙個引數為正規表示式,第二個引數為對應的源字串,第三個引數可選,代表對應的標誌位,可以放模式修政符等資訊。

2、re.search()

與match唯一不同的是會在全文中進行檢索並匹配,而match必須在開頭匹配

re.search(pattern,string)
第乙個引數為正規表示式,第二個引數為對應的源字串

3、全域性匹配函式,即源字串中可能有多個結果都符合模式

(1)、使用re.compile()對正規表示式進行預編譯

(2)、編譯後使用findall()根據正規表示式從源字串中將匹配的結果全部找出

import re 

string= "hhaahuaaxihaahhaa"

pattern=re.compile(".aa.") #預編譯

result=pattern.findall(string) #找出所有結果

print(result)

以上會返回haah,uaah,haah

4、re.sub()

根據正規表示式來實現替換某些字串的功能

re.sub(pattern,rep,string,max)

第乙個引數為正規表示式,第二個為要替換成的字串,第三個為源字串,第四個為可選項,代表最多可替換的次數,不寫,則全部替換

import re 

string= "aannhhahaahjhaajhkjaanjj"

pattern="aa"

result=re.sub(pattern,"cc",string) #最後即將所有的aa替換成cc

print(result)

正規表示式 常用正規表示式

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

正規表示式 常用正規表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...

正規表示式 常用表示式

羅馬數字 string p1 m d?c c dm l?x x lc v?i i vx string t1 vii match m1 regex.match t1,p1 交換前二個單詞 string t2 the quick brown fox string p2 s s s regex x2 ne...