一、字元
.匹配除換行符以外的任意字元.
\w 匹配字母數字或者下劃線.
\s 匹配任意的空白符
\d 匹配數字
\n 匹配乙個換行符
\t 匹配乙個製表符
^ 匹配字串的開始.
$ 匹配字串的結尾.
\w 匹配非字母或者數字下劃線
\d 匹配非數字
\s 匹配非空白符
a|b
() 匹配空號內的表示式 ,也表示乙個組
[...]匹配字元組中的字元.
[^....] 匹配除了字元組中字元的所有字元.
量詞 :
二、量詞
* 重複零次或者更多次
+重複一次或者更多次
?重複零次或者一次
重複n次
重複n次或者更多次
重複n到m次
#* + ? 例項:
import re
obj1=re.findall('李.?','李傑和李蓮英和李二棍子')
print(obj1) #['李傑', '李蓮', '李二'],?表示匹配0或者1次,即匹配李後面任意字元1次
obj2=re.findall('李.*','李傑和李蓮英和李二棍子')
print(obj2) #['李傑和李蓮英和李二棍子'],*表示匹配0次或者多次,即匹配李後面任意字元多次
obj3=re.findall('李.+','李傑和李蓮英和李二棍子')
print(obj3) #['李傑和李蓮英和李二棍子'],+表示匹配1次或者多次,即匹配李後面任意字元多次
obj3=re.findall('李.','李傑和李蓮英和李二棍子')
print(obj3) #['李傑和', '李蓮英', '李二棍'],表示匹配1到2次,即匹配李後面任意字元2次
非貪婪模式
用法說明
*?
重複0次或更多次,但盡可能少重複
+?
重複1次或更多次,但盡可能少重複
??
重複0次或1次,但盡可能少重複
?
重複n次以上,但盡可能少重複
?
重複n到m次,但盡可能少重複
import re
obj1=re.findall('李.??','李傑和李蓮英和李二棍子')
print(obj1) #輸出結果:['李', '李', '李']
obj2=re.findall('李.*?','李傑和李蓮英和李二棍子')
print(obj2) #輸出結果:['李', '李', '李']
obj3=re.findall('李.+?','李傑和李蓮英和李二棍子')
print(obj3) #輸出結果:['李傑', '李蓮', '李二']
obj3=re.findall('李.?','李傑和李蓮英和李二棍子')
print(obj3) #輸出結果:['李傑', '李蓮', '李二']
import re
obj1=re.findall('李.??','李傑和李蓮英和李二棍子')
print(obj1) #輸出結果:['李', '李', '李']
obj2=re.findall('李.*?','李傑和李蓮英和李二棍子')
print(obj2) #輸出結果:['李', '李', '李']
obj3=re.findall('李.+?','李傑和李蓮英和李二棍子')
print(obj3) #輸出結果:['李傑', '李蓮', '李二']
obj3=re.findall('李.?','李傑和李蓮英和李二棍子')
print(obj3) #輸出結果:['李傑', '李蓮', '李二']
4、字符集和[^]
import re
obj1=re.findall('李.[傑蓮英二棍子]*','李傑和李蓮英和李二棍子')
print(obj1) #輸出結果:['李傑', '李蓮英', '李二棍子']
obj2=re.findall('李.[^和]*','李傑和李蓮英和李二棍子')
print(obj2) #輸出結果:['李傑', '李蓮英', '李二棍子'],表示匹配李後面不是和的任意字元
obj3=re.findall('[\d]','456bdha3')
print(obj3) #輸出結果:['4', '5', '6', '3'],表示匹配任意乙個數字
obj3=re.findall('[\d]+','456bdha3')
print(obj3) #輸出結果:['456', '3'],表示匹配任意個數字
5、分組()與或|
身份證號碼是由15位或者18位的字元組成,如果是15位,首位不能是0,其他位數均為數字,如果是18位,則最後一位可能是數字或者x,用正規表示式匹配的兩種方式如下:
正規表示式
結果說明
^[1-9]\d(\d[0-9x])?$
()表示分組,將\d[0-9x]分成一組,就可以整體約束他們出現的次數為0-1次
^([1-9]\d[0-9x]|[1-9]\d)$
表示先匹配[1-9]\d[0-9x]如果沒有匹配上就匹配[1-9]\d
day18 正規表示式初學
正則規則 客觀存在的,世界上任何一種語言都能使用它。注意 正規表示式本身也和python沒有必然聯絡,它就是匹配字串內容的一種規則 在同乙個位置可能出現的各種字元組成了乙個字元組,在正規表示式中用 表示,括號內的內容如有排序,必須按ascii碼的公升序排列。正規表示式,預設匹配原則是貪婪匹配,即往多...
18 正規表示式
1 findall 返回所有滿足匹配條件的結果,放到列表裡,也就是說生成的是乙個列表。findall的優先順序 findall會優先把匹配結果組裡內容返回,如果想要匹配結果,取消許可權即可 取消優先順序 2 search 在整個字串內匹配,返回第乙個滿足匹配條件的結果,用group顯示,沒匹配到呼叫...
day18 re模組(正規表示式)
正規表示式是用來幹嘛的?匹配 字串的!python裡面字串裡提供的方法是完全匹配,但是很多情況下其實是要模糊匹配,但這個時候字串的處理方法就完成不了了,匹配 匹配手機號,前後都是固定格式,中間不確定 這個時候就需要我們的正規表示式來匹配字串!就其本質而言,正規表示式 或 re 是一種小型的 高度專業...