正規表示式是用來簡潔表達一組字串的表示式,主要用在字串匹配中
正規表示式功能強大,可謂』一行勝千言』
.正規表示式使用前需要進行編譯,
就是將符合正規表示式語法的字串編譯成乙個特徵,用以檢測其他字串是否符合該特徵
. 表示任何字元
字符集,對單個字元給出取值範圍[^
] 非字符集,對單個字元給出排除範圍 [
^abc]表示非a或b或c的單個字元
* 乙個字元0次或多次擴充套件
+ 乙個字元1次或多次擴充套件
? 前乙個字元0次或1次擴充套件 abc?表示ab,abc
| 左右表示式任意乙個 abc|def 表示abc,def
擴充套件前乙個字元n次 ab 表示abb
擴充套件前乙個字元m到n次 ab 表示ab,abb
^ 匹配字串開頭 ^abc表示abc且在乙個字串的開頭
$ 匹配字串結尾 abc$表示abc且在乙個字串的結尾
() 分組標記,內部只能用|操作符 (abc)表示abc,
(abc|def)表示abc,def
\d 數字,等價於[0-
9]\w 單詞字元,等價於[a-za-z0-
9_]
py[^th]
?on 'pyon'
'pyaon'
'pycon'..
. 即匹配py開頭on結尾中間沒有或有乙個字元但是不是t或h的字串
pyn 把大括號前的字元擴充套件0到3次 『pn』 『pyn』 『pyyyn』
^[a-za-z]
+$ 由26個字母組成的字串 其中^ $規定要匹配開頭和結尾^-
?\d+$ 整數形式的字串^[
0-9]
*[1-
9][0
-9]*$ 正整數形式的字串[1
-9]\d' re庫使用raw string型別表示正規表示式,表示為r'text'
'[1-9]\\d'
re模組中的常用函式
1 search():
字串查詢是否存在匹配的內容,返回第乙個匹配內容,沒找到返回none
2 match(
):從字串開始位置起開始匹配,如果找到返回match物件,沒找到返回none。如果存在但不是在起始位置也不算。
3 findall(
):以列表型別返回所有match物件,如果失敗返回none
4 finditer():
在字串中匹配,如果成功返回match可迭代物件,並可以通過迴圈方式對每乙個匹配物件進行相關操作,如果失敗返回none
for m in re.finditer(r'[1-9]\d'
,'bit100081 tsu100084'):
if m:
print
(m.group(0)
)100081
100084
5 split():
按照匹配的字串進行分割
可新增引數maxsplit=n 表示最大將字串分割成多少個,超過最大限制則一起輸出。
6 sub():
替換匹配的子字串,返回替換之後的字串,可新增引數限制最多替換多少個
m = re.sub(r'[1-9]\d'
,':zipcode'
,'bit100081 tsu100084'
)print
(m)bit:zipcode tsu:zipcode
rst = re.search(r'[1-9]\d'
,'bit100081 tsu100084'
)#一次性使用
pat = re.
compile
(r'[1-9]\d'
)rst = pat.search(
'bit100081 tsu100084'
)#物件導向,多次使用
當有多個子串符合匹配條件時預設輸出匹配最長的子串
當有操作符匹配不同長度子串時都可以加乙個問號表示最小匹配
rst = re.search(r'py.*n'
,'pyxn***n'
)print
(rst.group(0)
)rst = re.search(r'py.*?n'
,'py***n***n'
)print
(rst.group(0)
)pyxn***n
py***n
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...