1.compile(正則表達(dá)式) --->將正則表達(dá)式轉(zhuǎn)換為正則對(duì)象
print(re.compile('r\d{3}'))
2.fullmatch(正則表達(dá)式,字符串) --->讓字符串和正則表達(dá)式完全匹配
result = re.fullmatch(r'(\d{3})','123')
print(result)
應(yīng)用:檢測(cè)字符串內(nèi)容是否符合要求,例如:檢測(cè)賬號(hào)、密碼、判斷手機(jī)號(hào)、身份證號(hào)等是否合法
匹配對(duì)象:1.span 匹配結(jié)果在原字符串的位置
2.start和end -匹配到的字符串在原字符串中的開(kāi)始下標(biāo)和結(jié)束下標(biāo)
3.group -獲取匹配到的字符串(結(jié)果是字符串)
4.string -獲取原字符串
print(result.start(),result.end())
print(result.span(1))#打印匹配結(jié)果的第一個(gè)分組,使用的前提示必須有分組
print(result.group())
print(result.group(1))#獲取第二個(gè)分組匹配到的字符串
print(result.groups())#獲取所有分組匹配到的字符串
3.match(正則表達(dá)式,字符串)---->讓字符串的開(kāi)頭和正則表達(dá)式進(jìn)行匹配,匹配成功返回字符串對(duì)象,否則返回None
print(re.match(r'\D\d','s211ka'))
4.search(正則表達(dá)式,字符串) ---->在字符串中取匹配第一個(gè)符合正則的子串,匹配成功結(jié)果是匹配對(duì)象,否則是None
print(re.search(r'[\u4e00-\u9fa5]{3}','asd你好嗎22askj'))
5.split(正則表達(dá)式,字符串)--->將字符串按照正則要求的子串進(jìn)行切割(返回值是列表)
print(re.split(r'\d+','sahdj123hjk123b,2312k3j'))
6.sub(正則表達(dá)式,字符串1,字符串2) ---->將字符串2中能夠和正則表達(dá)式匹配的子串替換成字符串1,產(chǎn)生一個(gè)新的字符串
print(re.sub(r'曾令鵬','*','dsadsadasd操你媽雜種曾令鵬'))
7.findall (正則表達(dá)式,字符串) --->在字符串中獲取滿足條件的所有字符串(結(jié)果是列表)
注意:如果正則表達(dá)式中分組,直接獲取到的是分組中的內(nèi)容,結(jié)果中有多個(gè)分組則返回的是元組
print(re.findall(r'\d+[a-z]','das1sd2dsa'))
print(re.findall(r'(\d+)[a-z]','das1sd2dsa'))
8.finditer(正則表達(dá)式,字符串) --->在字符串中獲取滿足正則表達(dá)式的所有子串(結(jié)果是迭代器,元素是匹配對(duì)象)
result = re.finditer(r'\d+[a-z]', 'das1sd2dsa')
print(result)
print(next(result).group())
9.忽略大小寫,匹配的越蘇條件是放在函數(shù)的flags參數(shù)中的
print(re.fullmatch(r'[a-z]{2}','dS',re.I))
練習(xí):用戶名必須是由字母數(shù)字下劃線構(gòu)成且長(zhǎng)度在6-20個(gè)字符之間qq必須是5-12的數(shù)字首位不能為0
re_str=r'[1-9]\d{4,11}'#QQ號(hào)
re_str=r'[a-zA-Z\D_]{6,20}'