python正則表達式常見的知識點匯總
一、介紹
正則表達式是一個特殊的字符序列,計算機科學的一個概念。通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。
許多程序設計語言都支持利用正則表達式進行字符串操作。在Python中需要通過正則表達式對字符串進行匹配的時候,可以使用re模塊。re 模塊使 Python 語言擁有全部的正則表達式功能。
二、查找方法的使用
1、match方法(只匹配字符串開頭)
re.match嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。如果匹配成功,返回的是一個Match對象,要想獲得其值要調用group()方法
group(0)返回的是整個匹配的所有內容(默認為0)

函數(shù)語法:
re.match(pattern,string,flags=0)


2、search方法(掃描整個字符串,找到第一個匹配)
re.search 掃描整個字符串并返回第一個成功的匹配。
函數(shù)語法:
re.search(pattern, string, flags=0)
3、re.match與re.search的區(qū)別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數(shù)返回None;而re.search匹配整個字符串,直到找到一個匹配。
4、findall方法(掃描整個字符串,找到所有的匹配)
在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
語法格式:
re.findall(pattern,string,flags=0)
示例:


5、finditer方法(掃描整個字符串,找到所有的匹配,并返回一個可迭代對象)
和 findall 類似,在字符串中找到正則表達式所匹配的所有子串,并把它們作為一個迭代器返回
ret = re.finditer(r'\d+','he23ll34') # 得到的結果是一個可迭代對象
for x in ret: # 遍歷 ret 取出里面的每一項匹配
print(x.group(), x.span()) # 匹配對象里的group保存了匹配的結果三、re.Match類介紹
當我們調用re.match方法、re.search方法,或者對re.finditer方法的結果進行迭代時,拿到的數(shù)據類型都是re.Match對象。


四、正則表達式模式
1、非打印字符

2、特殊字符

3、定位符

4、限定符

五、替換
語法:
re.sub(pattern,repl,string,count=0)

六、貪婪模式和非貪婪模式
Python里數(shù)量詞默認是貪婪的(在少數(shù)語言里也可能是默認非貪婪),總是嘗試匹配盡可能多的字符;
非貪婪則相反,總是嘗試匹配盡可能少的字符。
在*,?,+,{m,n}后面加上 ?使貪婪變成非貪婪。

七、示例
1、匹配用戶名
用戶名匹配:由數(shù)字、大小寫字母、下劃線_和中橫線-組成,長度為4到14位,并且不能以數(shù)字開頭。
^在括號外就是開頭,在括號里就是取反
\D匹配一個非數(shù)字字符,等價于[^0-9]
[a-z0-9A-Z_\-]{3,13}表示可取范圍為a-z的小寫字母和數(shù)字0-9以及下劃線中橫線都可以,寫在中括號里面的是與的關系,最后的大括號代表的是其匹配長度為[3-13](左閉右閉)(因為開頭已經有一位是確定的了,所以后面的長度為[3-13])
r'^\D[a-z0-9A-Z_\-]{3,13}', 'sH_8'
2、匹配手機號
根據手機號的規(guī)則,對手機號前三位的格式進行了限制,因為有幾種格式都可以,條件之間的關系為或,正則表達式中用|表示
r'^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$'
3、匹配0~99之間的數(shù)字
開頭是【1-9】中的一個數(shù),個數(shù)為0或者1均可
后面的是【0-9】中的一個數(shù),個數(shù)為0或者1
r'^[1-9]?[0-9]?$'
總結
到此這篇關于python正則表達式常見知識點的文章就介紹到這了,更多相關python正則表達式知識點內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python如何實現(xiàn)MK突變檢驗方法,代碼復制修改可用
這篇文章主要介紹了python如何實現(xiàn)MK突變檢驗方法,代碼復制修改可用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
Python文本情感分類識別基于SVM算法Django框架實現(xiàn)
這篇文章主要為大家介紹了Python文本情感分類識別基于SVM算法Django框架實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
用Python實現(xiàn)web端用戶登錄和注冊功能的教程
這篇文章主要介紹了用Python實現(xiàn)web端用戶登錄和注冊功能的教程,需要的朋友可以參考下2015-04-04

