正規表示式

2021-08-25 11:23:54 字數 3045 閱讀 2630

1、math()

2.1、提取匹配後的字串

2.2、通用匹配

2.3、貪婪和非貪婪

2.4、修飾符

2.5、轉義字元

3、searh()

3.1提取html

4.findall()

5.sub()

6.complie()

正規表示式驗證**:

常用的匹配規則

單個字元

.匹配除換行之外的任意的乙個字元

a|b 

字元a或字元b

[afg]

a或者f或者g的乙個字元      

[0-4] 

0-4範圍內的乙個字元

[^m]      

不是m的乙個字元,注意區別^m

\s 乙個空格

\s  

乙個非空格

\d   

[0-9]

\d[^0-9]

\w字母、數字、下劃線

\w非字、數字、下劃線

重複*    

重複 >=0 次

+   

重複 >=1 次

?重複 0或者1 次

重複m次

重複m到n次位置^

字串的起始位置,表示匹配必須放生在被查詢文字開始處

$字串的結尾位置,表示該字串必須以這個正規表示式的模式結束

python的re庫提供了正規表示式的實現

傳入要匹配的字串以及正規表示式就能檢測,match從開頭開始匹配,如果開頭匹配不到則匹配失敗

import re

content ="hellow 123 4567 world_this is a regex demo"

#以hellow開頭、後面接著乙個空格,之後為是三個數字、再接一格空格、後面為3個數字、之後為10個數字、字母、下劃線結尾

resault = re.match('^hellow\s\d\s\d\s\w',content)

print(len(content))

print(resault)

print(resault.span())#輸出匹配的範圍

print(resault.group())#輸出匹配到的內容

#列印結果

##42

##<_sre.sre_match object; span=(0, 26), match='hellow 123 4567 world_this'>

##(0, 26)

##hellow 123 4567 world_this

使用()可以將匹配到的內容進行分段,使用group提取出來

import re

content ="hellow is_a_hellow_is_1231224"

resault = re.match('^hellow\s(\w+)(\w)',content)

print(len(content))

print(resault)

print(resault.span())

print(resault.group())

print(resault.group(1))

#29#<_sre.sre_match object; span=(0, 22), match='hellow is_a_hellow_is_'>

#(0, 22)

#hellow is_a_hellow_is_

#is_a_hello

.*

.用來匹配除換行符的任意字串,*用來匹配出現任意次數

.*貪婪模式/ .*?非貪婪

貪婪模式下回匹配盡可能多的字元,而非貪婪則匹配盡可能少的字元

修飾符

修飾符描述

re.i

對大小寫不敏感

re.l

z做本地化識別匹配

re.m

多行匹配,影響 ^和$

re.s

匹配所有字串

re.u

g更具unicode字符集匹配字元

re.x

t提供更加靈活的格式

import re

content ='hellow 1237 hellow'

resault = re.match('.*(/d+).*',content.re.s)#re.s使得.*匹配所有字元

print(len(content))

print(resault)

print(resault.span())

print(resault.group())

print(resault.group(1))

當遇到特殊字元時,在前面加\轉義,即可匹配

search也用也匹配字串,只不過不是從開頭開始匹配,它會掃瞄整個字串,然後返回乙個成功ipei的結果

import re'''

resault = re.search('(.*)',content,re.s)#re.s使得.*匹配所有字元

print(len(content))

print(resault)

print(resault.group())

print(resault.group(1))

#1303

#<_sre.sre_match object; span=(426, 454), match='csdn-專業it技術社群'>

#csdn-專業it技術社群

#csdn-專業it技術社群

search返回的是第乙個匹配的內容,而findall可以獲取到所有匹配的內容

可以使用sub修改文字

import re

content="asda76asd888asd99"

result = re.sub('\d+','',content) #第乙個引數是要刪除的內容,第二個刪除是要替換的內容

print(result)

#結果#asdaasdasd

將正規表示式編譯成正規表示式

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 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 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...