正則表達式是描述文本序列的標準表達方式,在文本處理中用正則表達式來描述文本中的字符串。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串,我們就認爲它“匹配”了,否則,該字符串就是不合法的。匹配時不會重複匹配其子串。
1.用字符表示字符
1.基礎符號【均只能匹配一個字符】
str(' ') |
正則表達式(' ')【'\'均有特殊意義】 |
指定數字 如:‘1’ | 與之相同 【 '1'】 |
指定字母 如::‘a' | 與之相同 【 'a'】 |
指定特殊符號 如:指定'-' | 需加上轉義符'\' 【'\-'】 |
指定多種字符【析取】 如:'a'或’b' | '[ ]' 【'[ab]'】 |
表示範圍 如:1-3之間的數字 | '-' 【'[1-3]'】【需與析取配合使用】 |
指定非這些字符的字符【非】 如: 非'a' 且 非'b' |
'^'(脫字符) 【'[^ab]'】【需與析取配合使用,且脫字符在開方括號的第一個位置纔有效】 |
空白 | ‘$’ 【只能放在結尾處】 |
'一個數字' | '\d' 或 '\w' |
'一個字母' | '\w' |
'一個字符' |
'.'(通配符) |
‘一個空格’(包括Tab等空白符) | ‘\s' |
2.拓展符號【均需與基礎符號組合使用,且只對前一個符號有效】
str(' ')【其中的某可不指定具體符號如:整數、字母等】 |
正則表達式(' ')【k爲某字符】 |
’某字符可有可無'【0/1個】 |
'k?' |
'至少一個某字符' | 'k+' |
'n個某字符' | 'k{n}' |
'n-m個某字符' | 'k{n,m}' |
'任意個某字符' | 'k * ‘ |
r 表示原生字符串,不會轉義 | r'k' |
匹配kk,但只返回()中的k | ‘(k)k’ |
2.用正則表達式提取字符串中的某些子串
功能 | 函數 | 參數解釋 | 返回值 |
判斷字符串中是否存在與正則表達式匹配的子串 【該子串起始位置爲0,既從頭開始匹配】
|
re.match(partten,string,flags=0) |
partten:正則表達式 string:被匹配的字符串 flags:修飾符 |
若匹配成功則返回一個match對象,否則返回None 可使用group() 或 groups() 匹配對象函數來獲取search對象的字符串 |
判斷字符串中是否存在與正則表達式匹配的子串 【該子串起始位置爲任意,起點不一定爲0】 |
re.search(partten,string,flags=0) |
partten:正則表達式 string:被匹配的字符串 flags:修飾符 |
若匹配成功則返回一個search對象,否則返回None 可使用group() 或 groups() 匹配對象函數來獲取search對象的字符串 |
提取string中所有匹配正確的子串 | re.findall(partten,string,flags=0) |
partten:正則表達式 string:被匹配的字符串 flags:修飾符 |
若匹配成功則返回一個非空list,否則返回[ ] |
按照能夠匹配的子串將字符串分割 | re.split(pattern, string, maxsplit=0, flags=0) |
partten:正則表達式 string:被匹配的字符串 maxsplit:最大切分次數 flags:修飾符 |
返回被切割後的非空list |
3.用正則表達式刪除某字串
功能 | 函數 | 參數解釋 | 返回值 |
將匹配到的字符進行替換 | re.sub(pattern, repl, string, count=0,flags=0) |
pattern : 正則中的模式字符串 repl: 用以替換匹配到的字符 string : 要被查找替換的原始字符串 count:被替換次數,0爲所有 flags:修飾符 |
返回值是修改後的結果字符串 |