符號含義
\s匹配乙個空格、空白符
\d匹配乙個數字
\w匹配乙個字母或數字
.匹配任意字元
*匹配任意個字元(包括0個)
+至少乙個字元
?表示0個或1個字元
表示n個字元
表示n~m個字元
注意:可以使用多者的組合形式。
eg:\d\s+\d
\d表示匹配 3 個數字,例如』010』;
\s 可以匹配乙個空格(也包括 tab 等空白符),所以\s+表示至少有乙個空格,例如匹配』 ', 』 '等;
\d表示 3-8 個數字,例如』1234567』。
表示範圍,eg:
a|b 匹配 a 或 b
^ 表示行的開頭,^\d 表示必須以數字開頭
$ 表示行的結束,\d$ 表示必須以數字結束
包含所有正規表示式的功能,需特別注意 \ 轉義 或 使用r字首(可以不考慮轉義的問題,推薦)
match()方法 判斷是否匹配,如果匹配成功,返回乙個 match 物件,否則返回 none。
import re
print
(re.match(r'^\d\-\d$'
,'010-12345'))
print
(re.match(r'^\d\-\d$'
,'010 12345'
))
結果輸出
<_sre.sre_match object; span=(0, 9), match='010-12345'>
none
常用判斷方法
test =
'使用者輸入的字串'
if re.match(r'正規表示式'
, test)
:print
('ok'
)else
:print
('failed'
)
利用正規表示式將不規範的輸入轉化為正確的陣列
print
(re.split(r'\s+'
,'a b c'))
print
(re.split(r'[\s\,]+'
,'a,b, c d'))
print
(re.split(r'[\s\,\;]+'
,'a,b;; c d'
))
輸出結果
['a', 'b', 'c']
['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd']
用於提取子串,用 () 表示要提取的分組。
m = re.match(r'^(\d)-(\d)$'
,'010-12345'
)print
(m)print
(m.group(0)
)# 第乙個匹配的子串,永遠是原始字串
print
(m.group(1)
)# 第二個匹配的子串
print
(m.group(2)
)# 第三個匹配的子串
t ='19:05:30'
m = re.match(r'(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$'
, t)
print
(m.groups(
))
結果輸出
<_sre.sre_match object; span=(0, 9), match='010-12345'>
010-12345
01012345
('19', '05', '30')
正則匹配預設是貪婪匹配,即匹配盡可能多的字元。
## 貪婪匹配
print
(re.match(r'^(\d+)(0*)$'
,'102300'
).groups())
## 非貪婪匹配——新增?
print
(re.match(r'^(\d+?)(0*)$'
,'102300'
).groups(
))
結果輸出
('102300', '')
('1023', '00')
當使用正規表示式時,re模組內部會做兩個事:
預編譯正規表示式(若該正則表達要重複使用幾千次):
編譯後生成regular expression 物件,可以呼叫對應的方法實現字串匹配。
# 編譯正規表示式
re_telephone = re.
compile
(r'^(\d)-(\d)$'
)# 使用
print
(re_telephone.match(
'010-123456'
).groups())
print
(re_telephone.match(
'010-8086'
).groups(
))
結果輸出
('010', '123456')
('010', '8086')
python 學習筆記(10)
字串方法 find join lower replace split strip translate find 可以在乙個較長的字串中查詢字串,返回值是這個字串所在的位置的最左端索引,找不到返回 1 例 with a moo moo here,and a moo moo there find moo...
python學習筆記(10)
多台是指對不同型別的變數進行相同操作,根據物件 或類 不同而表現出不同的行為。1 多型的方法是多型,屬性沒有多型。2 多型的存在有2個必要條件 繼承,方法重寫。在python中所有的 雙下劃包起來的方法,都稱為 魔方方法 作用是構造出優美的 將複雜的邏輯封裝成簡單的方法。運算子過載 運算子過載 cl...
python程式設計筆記
1 建立資料夾 os.mkdir和os.makedirs的區別 if not os.path.exists d hello test os.makedirs d hello test 連同中間目錄也會建立 os.mkdir d hello test 不會建立中間目錄 如果d hello目錄不存在 則...