一前言
本篇文章帶大家快速入門正則表達(dá)式的使用,正則表達(dá)式的規(guī)則不僅適用python語(yǔ)言务甥,基本大多數(shù)編程語(yǔ)言都適用薛躬,在日常使用中極為廣泛,讀者們有必要學(xué)好正則表達(dá)式馍忽。看完這篇文章燕差,讀者們要理解什么是正則表達(dá)式遭笋,正則表達(dá)式的規(guī)則,常見的正則表達(dá)式示例徒探,如何在python中使用函數(shù)進(jìn)行正則表達(dá)式操作瓦呼;
二 正則表達(dá)式的概念
正則表達(dá)式是指在一串字符串中使用特殊的模式匹配獲得子串,我們可以對(duì)獲得的子串進(jìn)行提取测暗,替換等操作央串;
舉個(gè)例子zszxz666 這個(gè)字符串,現(xiàn)在知識(shí)追尋者想要獲得子串zszxz, 則需要經(jīng)過一個(gè)模式匹配后獲得子串碗啄,在正則表達(dá)式中這個(gè)模式可以很多種格式质和,知識(shí)追尋者在這邊使用最簡(jiǎn)單的模式 [a-z]*,然后經(jīng)過python正則表達(dá)式匹配函數(shù)就可以獲得子串zszxz;這種方式比平時(shí)的字符串函數(shù)操作更加簡(jiǎn)便稚字,適用范圍廣泛饲宿;
討論學(xué)習(xí)群:887934385 當(dāng)中分享資料資源厦酬,學(xué)習(xí)途中能有所幫助
三 常用的正則匹配模式
常用的正則表達(dá)式模式如下,如果對(duì)這些模式有疑惑的可以參照 正則表達(dá)式手冊(cè) 瘫想;手冊(cè)中還有日常使用的正則示例仗阅,比如用戶名,密碼国夜,郵箱减噪,URL 的匹配模式等;
四 python正則常用修斯符
五 python常用正則行數(shù)說明
pattern 表示正則表達(dá)式模式
string 表示傳入待匹配字符串
flags 標(biāo)志位支竹,可以用第四節(jié)的修飾符限定
count 表示限定匹配的次數(shù)
repl 表示替換的字符串旋廷,也可為一個(gè)函數(shù)
pos 起始位置
endpos 結(jié)束位置
maxsplit 最大分割次數(shù)
六 常用函數(shù)示例
6.1 match函數(shù)
group(num=0) 函數(shù)表示提取匹配的表達(dá)式,可以使用組號(hào)提取對(duì)應(yīng)的匹配結(jié)果礼搁;知識(shí)追尋者想要獲得字符串中第一個(gè)出現(xiàn)的數(shù)字串
import re# 指定模式 至少匹配一個(gè)數(shù)字pattern = re.compile(r'\d+')# 輸入的字符串mat = pattern.match("451zszxz666")# 獲得第一個(gè)匹配到的值g = mat.group();# 451print(g)
6.2search函數(shù)
知識(shí)追尋者想要獲得指定的字符串饶碘,第一個(gè)匹配的就好;
import re# 想匹配nhzszxz 或者 nh666 或者 nhnhpattern = re.compile(r'nh(zszxz|666|nh)')
ser = pattern.search('nhzszxzkkk nh666 llll nhnh')
g_0 = ser.group()# zszxzprint(g_0)
g_1 = ser.group(1)# nhzszxzprint(g_1)
6.3 findall函數(shù)
知識(shí)追尋者想要在字符串中獲得所有的數(shù)字馒吴;
import re
pattern = re.compile(r'\d+')# 輸入的字符串mat = pattern.fidall("451zszxz666")# ['451', '666']print(mat)# 666print(mat[1])
6.4 sub函數(shù)
知識(shí)追尋者想要獲得所有非數(shù)字的子串扎运;
import re
str ='8556gfggs5555dfg'# 替換所有數(shù)字result = re.sub(r'\d','', str)# gfggsdfgprint(result)
6.5 split函數(shù)
知識(shí)追尋者想要獲得以,分割的字符串;
import re
str ='123,456,zszxz,666'result = re.split(',',str)# ['123', '456', 'zszxz', '666']print(result)
6.6 finditer 函數(shù)
知識(shí)追尋者想要獲得數(shù)字451,和666饮戳;
import re
pattern = re.compile(r'\d+')# 輸入的字符串mat = pattern.finditer("451zszxz666")foritin mat:
? ? print(it.group())