03 正規表示式基礎

2021-10-05 21:32:40 字數 3825 閱讀 9058

1 正規表示式

2. re模組應用1. 正規表示式

1.1 什麼是正規表示式

1.2 正規表示式分類

元字元表示式匹配.

對除換行符以外的其他所有字元進行匹配

|邏輯或操作符

匹配字符集中的乙個字元,與|相似

[^]取反操作,對上面操作取反,^須放在括號最前面

-定義乙個裡的乙個字元區間,如[a-z]

\轉義操作符,對其後特殊字元轉義

()分組操作符,()裡表示乙個分組,對其作為乙個整體進行單獨匹配

轉義字元

表示式匹配\r, \n

回車,換行符

\t製表符

\\匹配 \

^匹配 ^

\$匹配 $

\.匹配 .

\*匹配 *

\?匹配 ?……

預定義匹配字符集

表示式匹配

\d匹配任意數字

\w匹配任意字母、數字或下劃線中的乙個,即[a-za-z0-9_]

\s匹配空格、製表符、換頁符等任意乙個空白字元

\d對\d取反,即[^\d]

\w對\w取反,即[^\w]

\s對\s取反,即[^\s]

重複匹配

表示式匹配n次匹配

至少包含m個,之多為n個

至少包含m個,無上限

?出現0次或1次

+至少出現1次

*出現0次或任意多次

位置匹配

表示式匹配^

開頭匹配,指定開頭字元

$結尾匹配,指定結尾字元

\b邊界匹配,即單詞和空格之間的部分

\b非邊界匹配,即邊界之外部分

2. re模組應用

2.1 模組基本用法

import re

# 提前對模式串進行編譯

pat = re.

compile

('\d+'

)r = pat.findall(

'abf426 47alwk80'

)print

(r)# ['426', '47', '80']

match(pattern, string, flags=0)

import re

r = re.match(r'\d-\w'

,'1-python'

)print

(r)#

print

(r.start())

# 0 獲取匹配串的起始下標

print

(r.end())

# 3 獲取匹配字串結束下標

print

(r.span())

# (0, 3) 獲取匹配字串區間

print

(r.group())

# 1-p 獲取匹配字串分組

# match固定從開頭開始匹配

print

(re.match(r'\d\w'

,'a1'))

# none

search(pattern, string, flags=0)

r = re.search(r'\d-\w'

,'p1-python'

)print

(r)#

print

(r.group())

# 1-p

findall(pattern, string, flags=0)

r = re.findall(r'\d+'

,'ab4fsj87fwl10'

)print

(r)# ['4', '87', '10'] 多值匹配

split(pattern, string, maxsplit=0, flags=0)

r = re.split(r'\d+'

,'ab4fsj87fwl10'

)print

(r)# ['ab', 'fsj', 'fwl', ''] 預設

r = re.split(r'\d+'

,'ab4fsj87fwl10'

, maxsplit=2)

print

(r)# ['ab', 'fsj', 'fwl10'] 指定分割次數

sub(pattern, repl, string, count=0, flags=0)

r = re.sub(r'\d+'

,' '

,'ab4fsj87fwl10'

)# 空格替換數字

print

(r)# ab fsj fwl 預設

r = re.sub(r'\d+'

,' '

,'ab4fsj87fwl10'

, count=1)

print

(r)# ab fsj87fwl10 僅替換一次

group() 與 groups()

# 無分組情況

r = re.match(r'\w+://\w+\.\w+\.\w+'

,'')print

(r.group())

# print

(r.group(1)

)# indexerror: no such group

print

(r.groups())

# () 返回乙個空元組

# 有分組情況

# ('http', 'www', 'baidu', 'com') 返回乙個元組

2.2 貪婪與非貪婪模式

2.3 常用正規表示式

功能

表示式數字

^[0-9]*$

⾄少n位的數字

^\d$

零和⾮零開頭的數字

^(0|[1-9][0-9]*)$

有兩位⼩數的正實數

^[0-9]+(.[0-9])?$

⾮零的負整數

^-[1-9]\d*$

⾮負浮點數

^\d+(\.\d+)?$

浮點數^(-?\d+)(.\d+)?$

特殊場景的表示式:

功能

表示式email位址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

網域名稱[a-za-z0-9][-a-za-z0-9](/.[a-za-z0-9][-a-za-z0-9])+/.?

⼿機號碼

^(13[0-9]|14[5|7]|15[0-9]|18[0-9])\d$

身份證號

^\d|\d$ (15位或18位)

⽇期格式

^\d-\d-\d

空⽩⾏的正規表示式

\n\s*\r (可以⽤來刪除空⽩⾏)

ip位址提取

\d+\.\d+\.\d+\.\d+ (提取ip地時有用)

JavaScript 正規表示式03

正規表示式03 var str1 g.gle i var str2 gooogle 點 表示匹配任意乙個字元,這裡有 所有可以匹配多個 alert str1.test str2 var str1 box i var str2 box 返回值是 陣列,如果沒有值,就返回 null alert str1...

03 常用正規表示式

1 使用者名稱正則 使用者名稱正則,4到16位 字母,數字,下劃線,減號 var upattern a za z0 9 輸出 true console.log upattern.test ifat3 2 密碼強度正則 密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字元...

正規表示式 1 正規表示式基礎

1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...