匹配結尾開頭
簡單判斷email,轉義
分組
import re
defmain()
: names =
["age"
,"_age"
,"loge"
,"age1"
,"a_age"
,"age_1_"
,"age!"
,"a#123"
,"______"
]for name in names:
ret = re.match(r"[a-za-z_][a-za-z0-9_]*"
,name)
if ret:
print
("變數名:%s 符合要求 . . .%s"
%(name,ret.group())
)else
:print
("變數名: %s 不符合要求 . . ."
可以看到age!,a#123滿足要求,按照正則邏輯應該是不滿足的。因為match判頭不判尾 到age就結束了 後面自然打出來,那麼怎麼樣才能判頭判尾。 字元
功能^匹配字串開頭
$匹配字串結尾
$加上就ok了
ret = re.match(r"[a-za-z_][a-za-z0-9_]*$"
,name)
import re
defmain()
: names =
["age"
,"_age"
,"loge"
,"age1"
,"a_age"
,"age_1_"
,"age!"
,"a#123"
,"______"
]for name in names:
ret = re.match(r"[a-za-z_][a-za-z0-9_]*$"
,name)
if ret:
print
("變數名:%s 符合要求 . . .%s"
%(name,ret.group())
)else
:print
("變數名: %s 不符合要求 . . ."
判斷163郵箱位址
**:
import re
defmain()
: email =
input()
ret = re.match(r"[a-za-z_0-9]@163.com"
,email)
if ret:
print
("%s符合要求. . . ."
% email)
else
:print
("%s不符合要求. . . ."
% email)
if __name__ ==
'__main__'
: main(
)
注意match判頭不判尾,所以在com後面多加也會符合要求
注意.com中的.
如果理解成匹配單個字元,那麼1234@163acom也是可以的
所以這個時候需要$判尾,所以這時候需要把.轉義
\ . 前面加上反斜槓就是轉義
字元功能
|匹配左右任意乙個表示式
(ab)
將括號中字元作為乙個分組
\num
引用分組num匹配到的字串
(?p)
分組起別名
(?p=name)
引用別名為name分組匹配到的字串
判斷163郵箱位址和126位址(分組可以用來取資料)
把163和126位址分組 |相當於or的作用
ret = re.match(r"[a-za-z_0-9]@(163|126).com"
,email)
ret.group(1)
//輸出將是第乙個分組裡面的資料 這個示例是163或者126
多加幾個分組
ret = re.match(r"([a-za-z_0-9])@(163|126).com"
,email)
ret.group(1)
//輸出將是第乙個分組裡面的資料 這個示例是[a-za-z_0-9]
ret.group(2)
//輸出將是第乙個分組裡面的資料 這個示例是163或者126
正規表示式05 匹配開頭結尾
字元功能 匹配字串開頭 匹配字串結尾 coding utf 8 import re email list xiaowang 163.com xiaowang 163.comheihei com.xiaowang qq.com for email in email list ret re.match ...
正則匹配開頭和結尾
字元功能 匹配字串開頭 匹配字串結尾 coding utf 8 import re email list xiaowang 163.com xiaowang 163.comheihei com.xiaowang qq.com for email in email list ret re.match ...
正規表示式三 匹配多個字元,開頭和結尾
匹配多個字元的相關格式 first 字元 desc 功能 匹配前乙個字元出現0次或者無限次,即可有可無 匹配前乙個字元出現1次或者無限次,即至少有1次 匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有 匹配前乙個字元出現m次 匹配前乙個字元出現從m到n次 匹配字串開頭 匹配字串結尾 codin...