正規表示式為高階的文字模式匹配、抽取、與/或文字形式的搜尋和替換功能提供了基礎。正規表示式描述了模式的重複或者表述多個字元.
在編寫處理字串的程式或網頁時,經常有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的**。
match方法
match嘗試從字串的起始位置開始匹配;
-如果起始位置沒有匹配成功, 返回none;
-如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;
import re
aobj = re.match(r'we', 'wetoshello')
print(aobj) #輸出:<_sre.sre_match object; span=(0, 2), match='we'>
print(aobj.group()) #輸出:we
findall方法
findall會掃瞄整個字串, 獲取匹配的所有內容;
res = re.findall(r'\d\d', '閱讀數為2 點讚數為10')
print(res) #輸出:['10']
res = re.findall(r'\d', '閱讀數為2 點讚數為10')
print(res) #輸出:['2','1','0']
search方法
search會掃瞄整個字串, 只返回第乙個匹配成功的內容的sre物件;
如果起始位置沒有匹配成功, 返回none;
如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;
resobj = re.search(r'\d', '閱讀數為8 點讚數為10')
if resobj:
print(resobj.group()) #輸出:8
sub()方法: 對符合正則的內容進行替換;
split()方法: 指定多個分隔符進行分割;
**說明
.匹配除了\n之外的任意字元
\d匹配乙個數字字元, 等價於[0-9]
\d匹配任意非數字的字元,等價於[^0-9]
\sspace(廣義的空格: 空格, \t, \n, \r), 匹配單個任何的空白字元
\s匹配除了單個任何的空白字元
\w字母數字或者下劃線, [a-za-z0-9_]
\w除了字母數字或者下劃線, [^a-za-z0-9_]
**說明
*代表前乙個字元出現0次或者無限次; \d*, .*
+代表前乙個字元出現一次或者無限次; d+
?代表前乙個字元出現1次或者0次; 假設某些字元可省略, 也可以不省略的時候使用
前乙個字元出現m次;
前乙個字元至少出現m次; * == ; + ===
前乙個字元出現m次到n次; ? ===
**說明
|匹配|左右任意乙個表示式即可
(ab)
將括號中的字元作為乙個分組
\num
引用分組第num個匹配到的字串
(?p)
分組起別名
(?p=name)
引用分組的別名
^ :
如果沒有在裡面的時候, 代表以什麼開頭;
如果在裡面的時候,代表除了…之外;
\1 :
代表的是一定要與第乙個分組的內容保持一致, 否則不匹配;
匹配url位址
# 進行分組的時候, findall方法只返回分組裡面的內容;
# print(re.findall(pattern, url))
resobj = re.search(pattern, url)
if resobj:
# group方法會返回匹配的所有內容;
print(resobj.group())
# groups方法返回分組裡面的內容;
print(resobj.groups())匹配日期
import re
date = '2019-10-10'
pattern = r'\d(\-|\/|.)\d\1\d'
reobj = re.search(pattern, date)
if reobj:
print(reobj.group())
print(reobj.groups())
匹配使用者名稱
字串是否包含中文 [ ]表示匹配方括號的中任意字元,\u4e00是unicode中漢字的開始,\u9fa5則是unicode中漢字的結束
import re
user = '西部開源123'
pattern = r'[\w\-\u4e00-\u9fa5]+'
print(re.findall(pattern, user))
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...