正規表示式:約束字串匹配某種形式的規則
作用:檢測某個字串是否符合規則。比如:判斷手機號,身份證號是否合法。
正規表示式由一些[普通字元]和[元字元]組成:
(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 表示替換所有的匹...