Python re模塊介紹
Python中轉(zhuǎn)義字符
正則表達(dá)式使用反斜杠” \ “來代表特殊形式或用作轉(zhuǎn)義字符,這里跟Python的語法沖突,因此,Python用” \\\\ “表示正則表達(dá)式中的” \ “,因?yàn)檎齽t表達(dá)式中如果要匹配” \ “,需要用\來轉(zhuǎn)義,變成” \\ “,而Python語法中又需要對(duì)字符串中每一個(gè)\進(jìn)行轉(zhuǎn)義,所以就變成了” \\\\ “。
上面的寫法是不是覺得很麻煩,為了使正則表達(dá)式具有更好的可讀性,Python特別設(shè)計(jì)了原始字符串(raw string),需要提醒你的是,在寫文件路徑的時(shí)候就不要使用raw string了,這里存在陷阱。raw string就是用'r'作為字符串的前綴,如 r”\n”:表示兩個(gè)字符”\”和”n”,而不是換行符了。Python中寫正則表達(dá)式時(shí)推薦使用這種形式。
正則表達(dá)式元字符說明
. 匹配除換行符以外的任意字符 ^ 匹配字符串的開始 $ 匹配字符串的結(jié)束 [] 用來匹配一個(gè)指定的字符類別 ? 對(duì)于前一個(gè)字符字符重復(fù)0次到1次 * 對(duì)于前一個(gè)字符重復(fù)0次到無窮次 {} 對(duì)于前一個(gè)字符重復(fù)m次 {m,n} 對(duì)前一個(gè)字符重復(fù)為m到n次 \d 匹配數(shù)字,相當(dāng)于[0-9] \D 匹配任何非數(shù)字字符,相當(dāng)于[^0-9] \s 匹配任意的空白符,相當(dāng)于[ fv] \S 匹配任何非空白字符,相當(dāng)于[^ fv] \w 匹配任何字母數(shù)字字符,相當(dāng)于[a-zA-Z0-9_] \W 匹配任何非字母數(shù)字字符,相當(dāng)于[^a-zA-Z0-9_] \b 匹配單詞的開始或結(jié)束
模塊函數(shù)說明即舉例
re.compile 將正則表達(dá)式編譯成pattern對(duì)象
compile(pattern, flags=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):標(biāo)志位
re.match 只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None
match(pattern, string, flags=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):表示要匹配的字符串
第三個(gè)參數(shù):標(biāo)致位,用于控制正則表達(dá)式的匹配方式
re.search 匹配整個(gè)字符串,直到找到一個(gè)匹配
search(pattern, string, flags=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):表示要匹配的字符串
第三個(gè)參數(shù):標(biāo)致位,用于控制正則表達(dá)式的匹配方式
>>> import re >>> pattern = re.compile(r'linuxeye') >>> match = pattern.match('jb51.net') >>> print match <_sre.SRE_Match object at 0x7f4e96e61c60> >>> print match.group() linuxeye >>> m = pattern.match('blog.jb51.net') #match匹配開頭,沒找到 >>> print m None >>> m = pattern.search('blog.jb51.net') #search匹配整個(gè)字符串,直到找到一個(gè)匹配 >>> print m <_sre.SRE_Match object at 0x7f15abfc6b28> >>> print m.group() linuxeye
>>> m = re.match(r'linuxeye','jb51.net') #不用re.compile >>> print m <_sre.SRE_Match object at 0x7f4e96e61b90> >>> print m.group() linuxeye >>> m = re.match(r'linuxeye','www.dbjr.com.cn') >>> print m None
re.split 用于來分割字符串
split(pattern, string, maxsplit=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):字符串
第三個(gè)參數(shù):最大分割字符串,默認(rèn)為0,表示每個(gè)匹配項(xiàng)都分割
實(shí)例:分割所有的字符串
>>> import re >>> test_str = "1 2 3 4 5" >>> re.split(r'\s+',test_str) ['1', '2', '3', '4', '5'] >>> re.split(r'\s+',test_str,2) #分割前2個(gè) ['1', '2', '3 4 5'] >>> test_str = "1 . 2. 3 .4 . 5" >>> re.split(r'\.',test_str) ['1 ', ' 2', ' 3 ', '4 ', ' 5'] >>> re.split(r'\.',test_str,3) ['1 ', ' 2', ' 3 ', '4 . 5']
re.findall 在目標(biāo)字符串查找符合規(guī)則的字符串
findall(pattern, string, flags=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):目標(biāo)字符串
但三個(gè)參數(shù):后面還可以跟一個(gè)規(guī)則選擇項(xiàng)
返回的結(jié)果是一個(gè)列表,建中存放的是符合規(guī)則的字符串,如果沒有符合規(guī)則的字符串唄找到,就會(huì)返回一個(gè)空值
>>> import re >>> test_mail = '<test01@gmail.com> <test02@gmail.org> test03@gmail.net' >>> mail_re = re.compile(r'\w+@g....\.[a-z]{3}') >>> re.findall(mail_re,test_mail) ['test01@gmail.com', 'test02@gmail.org', 'test03@gmail.net']
re.sub 以正則表達(dá)式為基礎(chǔ)的替換工作
sub(pattern, repl, string, count=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):替換后的字符串
第三個(gè)參數(shù):字符串
第四個(gè)參數(shù):替換個(gè)數(shù)。默認(rèn)為0,表示每個(gè)匹配項(xiàng)都替換
>>> test = 'blog.jb51.net jb51.net' >>> test_re = re.compile(r'\.') >>> re.sub(test_re,'--',test) 'blog--linuxeye--com linuxeye--com' >>> re.sub(test_re,'--',test,1) 'blog--jb51.net jb51.net'
相關(guān)文章
python+playwright微軟自動(dòng)化工具的使用
這篇文章主要介紹了python+playwright微軟自動(dòng)化工具的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python3通過字符串訪問和修改局部變量的方法實(shí)例
最近在看python中nonlocal和global的使用,參考網(wǎng)上的大作,寫了點(diǎn)自己的心得,下面這篇文章主要給大家介紹了關(guān)于Python3通過字符串訪問和修改局部變量的相關(guān)資料,需要的朋友可以參考下2022-04-04Python實(shí)現(xiàn)繪制M2貨幣供應(yīng)率曲線
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)繪制M2貨幣供應(yīng)率曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06Python+random模塊實(shí)現(xiàn)隨機(jī)抽樣
python的random庫,提供了很多隨機(jī)抽樣方法。本文將通過幾個(gè)示例為大家詳細(xì)講講random模塊實(shí)現(xiàn)隨機(jī)抽樣的方法,需要的可以參考一下2022-09-09Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
下面小編就為大家分享一篇Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04淺談盤點(diǎn)5種基于Python生成的個(gè)性化語音方法
這篇文章主要介紹了淺談盤點(diǎn)5種基于Python生成的個(gè)性化語音方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02