python之正規表示式

2021-10-02 14:33:59 字數 3007 閱讀 2255

正規表示式:約束字串匹配某種形式的規則

作用:檢測某個字串是否符合規則。比如:判斷手機號,身份證號是否合法。

正規表示式由一些[普通字元][元字元]組成:

(1)普通字元包括大小寫字母數字

(2)元字元具有特殊含義,大體種類分為如下:

1. 預定義字符集,字元組

2. 量詞

3. 邊界符

4. 分組

(一) 匹配單個字元 => [元字元] 預定義字符集

預定義字符集

匹配內容

.匹配任意字元,除了換行符\n

\d匹配數字

\d匹配非數字

\w匹配字母或數字或下劃線 (正則函式中,支援中文的匹配)

\w匹配非字母或數字或下劃線

\s匹配任意的空白符

\s匹配任意非空白符

\n匹配乙個換行符

\t匹配乙個製表符

匹配中括號內列舉的字元

字元組格式

說明 [預設必須從字元組中選乙個]

[…]匹配字元組中的字元

[^…]

匹配除了字元組內所有內容,之外的所有字元

字元組內容

待匹配字元

匹配結果

說明[0123456789]

8true

字元組裡列舉的各種字元,必須滿足乙個,否則返回假,不匹配

[abcdefg]

9false

由於字元組中沒有"9"字元,所以不匹配

[0-9]

7true

可用 - 表示範圍,[0-9] 和 [0123456789]是乙個意思

[a-z]

strue

[a-z]匹配所有的小寫字母

[a-z]

btrue

[a-z]就表示所有的大寫字母

[0-9a-fa-f]

etrue

可以匹配數字,大小寫形式的a-f. 該正則可驗證十六進製制

(二) 匹配多個字元 => [元字元] 量詞符號

量詞用法說明

?重複0次或1次

+重複1次或多次 (至少1次)

*重複0次或多次 (任意次)

重複n次

重複n次或更多次 (至少n次)

重複n到m次

.* .+

貪婪模式匹配

.*? .+?

非貪婪模式匹配

# 貪婪匹配:   預設向更多次數匹配  (底層用的是回溯演算法)

# 非貪婪匹配: 預設向更少次數匹配 (量詞的後面加?號)

(1)量詞( * ? + {} )加上問號?表示非貪婪 惰性匹配

(2)例:.*?w 表示匹配任意長度任意字元遇到乙個w就立即停止

(三) 匹配開頭結尾 => [元字元] 邊界符號

邊界符說明

\b匹配乙個字元的邊界

^匹配字串的開始

$匹配字串的結尾

(四) 匹配分組 => [元字元] 分組符號

分組用法說明

a|b匹配字元a 或 字元b (如果兩個當中有重合部分,把更長的那個放前面)

(ab)

匹配括號內的表示式 ,將()作為乙個分組

\num (*****)

引用分組num匹配到的字串 (*****)

(?p)

給分組命名

(?p=name)

引用別名: 把name分組所匹配到的內容引用到這裡

# ###分組

# 1.正常分組 ()

1) 正常情況下用()圓括號進行分組 可以用\1 反向引用第乙個圓括號匹配的內容。(****)

2) (?:正規表示式) 表示取消優先顯示的功能。(****)

# 2.命名分組

3) (?p《組名》正規表示式) 給這個組起乙個名字

4) (?p=組名) 引用之前組的名字,把該組名匹配到的內容放到當前位置

(五) 正規表示式修飾符

常用修飾符

說明re.i

使匹配對大小寫不敏感

re.m

多行匹配,影響 ^ 和 $

re.s

使 . 匹配包括換行在內的所有字元

findall  匹配字串中相應內容,返回列表 [用法: findall("正規表示式","要匹配的字串")]

search 通過正則匹配出第乙個物件返回,通過group取出物件中的值

match 驗證使用者輸入內容

split 切割

sub 替換

subn 替換

finditer 匹配字串中相應內容,返回迭代器

compile 指定乙個統一的匹配規則

# 1. email位址

\w[-\w.+]*@([a-za-z0-9][-a-za-z0-9]+\.)+[a-za-z]

# 2.url位址

# 3.手機號(國內)

0?(13|14|15|17|18|19)[0-9]

# 4.**號碼(國內)

[0-9-()()]

[1-9]([0-9])

# 6.格式日期

\d(\-|\/|.)\d\1\d

# 7.身份證號

\d[\d|x]|\d

#8.整數 負整數 正整數

-?[1-9]\d*

-[1-9]\d*

[1-9]\d*

# 9. 浮點數 負浮點數 正浮點數

-?([1-9]\d*.\d*|0.\d*[1-9]\d*)

-([1-9]\d*.\d*|0.\d*[1-9]\d*)

[1-9]\d*.\d*|0.\d*[1-9]\d*

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 表示替換所有的匹...