python正則表達(dá)式常見的知識(shí)點(diǎn)匯總
一、介紹
正則表達(dá)式是一個(gè)特殊的字符序列,計(jì)算機(jī)科學(xué)的一個(gè)概念。通常被用來檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。
許多程序設(shè)計(jì)語(yǔ)言都支持利用正則表達(dá)式進(jìn)行字符串操作。在Python中需要通過正則表達(dá)式對(duì)字符串進(jìn)行匹配的時(shí)候,可以使用re模塊。re 模塊使 Python 語(yǔ)言擁有全部的正則表達(dá)式功能。
二、查找方法的使用
1、match方法(只匹配字符串開頭)
re.match嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match()就返回none。如果匹配成功,返回的是一個(gè)Match對(duì)象,要想獲得其值要調(diào)用group()方法
group(0)返回的是整個(gè)匹配的所有內(nèi)容(默認(rèn)為0)
函數(shù)語(yǔ)法:
re.match(pattern,string,flags=0)
2、search方法(掃描整個(gè)字符串,找到第一個(gè)匹配)
re.search 掃描整個(gè)字符串并返回第一個(gè)成功的匹配。
函數(shù)語(yǔ)法:
re.search(pattern, string, flags=0)
3、re.match與re.search的區(qū)別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。
4、findall方法(掃描整個(gè)字符串,找到所有的匹配)
在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
語(yǔ)法格式:
re.findall(pattern,string,flags=0)
示例:
5、finditer方法(掃描整個(gè)字符串,找到所有的匹配,并返回一個(gè)可迭代對(duì)象)
和 findall 類似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回
ret = re.finditer(r'\d+','he23ll34') # 得到的結(jié)果是一個(gè)可迭代對(duì)象 for x in ret: # 遍歷 ret 取出里面的每一項(xiàng)匹配 print(x.group(), x.span()) # 匹配對(duì)象里的group保存了匹配的結(jié)果
三、re.Match類介紹
當(dāng)我們調(diào)用re.match
方法、re.search
方法,或者對(duì)re.finditer
方法的結(jié)果進(jìn)行迭代時(shí),拿到的數(shù)據(jù)類型都是re.Match
對(duì)象。
四、正則表達(dá)式模式
1、非打印字符
2、特殊字符
3、定位符
4、限定符
五、替換
語(yǔ)法:
re.sub(pattern,repl,string,count=0)
六、貪婪模式和非貪婪模式
Python里數(shù)量詞默認(rèn)是貪婪的(在少數(shù)語(yǔ)言里也可能是默認(rèn)非貪婪),總是嘗試匹配盡可能多的字符;
非貪婪則相反,總是嘗試匹配盡可能少的字符。
在*,?,+,{m,n}
后面加上 ?
使貪婪變成非貪婪。
七、示例
1、匹配用戶名
用戶名匹配:由數(shù)字、大小寫字母、下劃線_
和中橫線-
組成,長(zhǎng)度為4到14位,并且不能以數(shù)字開頭。
^在括號(hào)外就是開頭,在括號(hào)里就是取反
\D匹配一個(gè)非數(shù)字字符,等價(jià)于[^0-9]
[a-z0-9A-Z_\-]{3,13}表示可取范圍為a-z的小寫字母和數(shù)字0-9以及下劃線中橫線都可以,寫在中括號(hào)里面的是與的關(guān)系,最后的大括號(hào)代表的是其匹配長(zhǎng)度為[3-13](左閉右閉)(因?yàn)殚_頭已經(jīng)有一位是確定的了,所以后面的長(zhǎng)度為[3-13])
r'^\D[a-z0-9A-Z_\-]{3,13}', 'sH_8'
2、匹配手機(jī)號(hào)
根據(jù)手機(jī)號(hào)的規(guī)則,對(duì)手機(jī)號(hào)前三位的格式進(jìn)行了限制,因?yàn)橛袔追N格式都可以,條件之間的關(guān)系為或,正則表達(dá)式中用|表示
r'^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$'
3、匹配0~99之間的數(shù)字
開頭是【1-9】中的一個(gè)數(shù),個(gè)數(shù)為0或者1均可
后面的是【0-9】中的一個(gè)數(shù),個(gè)數(shù)為0或者1
r'^[1-9]?[0-9]?$'
總結(jié)
到此這篇關(guān)于python正則表達(dá)式常見知識(shí)點(diǎn)的文章就介紹到這了,更多相關(guān)python正則表達(dá)式知識(shí)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python多進(jìn)程控制學(xué)習(xí)小結(jié)
這篇文章主要介紹了python多進(jìn)程控制學(xué)習(xí)小結(jié),想要充分利用多核CPU資源,Python中大部分情況下都需要使用多進(jìn)程,Python中提供了multiprocessing這個(gè)包實(shí)現(xiàn)多進(jìn)程。感興趣的小伙伴們可以參考一下2018-10-10Python ADF 單位根檢驗(yàn) 如何查看結(jié)果的實(shí)現(xiàn)
這篇文章主要介紹了Python ADF 單位根檢驗(yàn) 如何查看結(jié)果的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python matplotlib實(shí)現(xiàn)多重圖的繪制
Matplotlib作為Python的2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。本文將利用Matplotlib庫(kù)繪制多重圖,感興趣的可以了解一下2022-03-03python實(shí)現(xiàn)批量修改服務(wù)器密碼的方法
這篇文章主要介紹了python實(shí)現(xiàn)批量修改服務(wù)器密碼的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08python實(shí)現(xiàn)Flappy Bird源碼
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Flappy Bird源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12python使用tensorflow深度學(xué)習(xí)識(shí)別驗(yàn)證碼
這篇文章主要介紹了python使用tensorflow深度學(xué)習(xí)識(shí)別驗(yàn)證碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Python實(shí)現(xiàn)的徑向基(RBF)神經(jīng)網(wǎng)絡(luò)示例
這篇文章主要介紹了Python實(shí)現(xiàn)的徑向基(RBF)神經(jīng)網(wǎng)絡(luò),結(jié)合完整實(shí)例形式分析了Python徑向基(RBF)神經(jīng)網(wǎng)絡(luò)定義與實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02python3利用ctypes傳入一個(gè)字符串類型的列表方法
今天小編就為大家分享一篇python3利用ctypes傳入一個(gè)字符串類型的列表方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python?OpenCV超詳細(xì)講解圖像堆疊的實(shí)現(xiàn)
OpenCV用C++語(yǔ)言編寫,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實(shí)時(shí)視覺應(yīng)用,并在可用時(shí)利用MMX和SSE指令,本篇文章帶你通過OpenCV實(shí)現(xiàn)圖像堆疊2022-04-04