經過完善郵箱匹配來一步步學習正則表達

首先,在學習以前先肯定一下郵箱的格式,郵箱的通常格式爲xxx@xxx.xxx,其中xxx可爲數字、字母、下劃線_,中劃線-,點號.,加號+等組成。學習

在看具體代碼以前須要先了解一些基礎知識spa

# []表示匹配字符集中的任意一個字符
# \w 表示匹配任何字母數字字符
# \s表示任何空格字符
# \d表示任何十進制數字
# +表示匹配1次或屢次前面出現的正則表達
# *表示匹配0次或屢次前面出現的正則表達
# (?:)表示一個匹配不用保存的分組code

一、匹配最簡單的郵箱格式,如liutian@126.comblog

def test11():
    strs="liutian@126.com."
    reg="\w+@\w+.\w+"
    print re.match(reg,strs).group()
"\w+@\w+.\w+"的意思是:1次或屢次的任何字母數字@1次或屢次的字母數字.一次或屢次的字母數字。
如此匹配不完善,常常會有的郵箱會有多個後綴。
二、完善匹配,如liutian@126.mygene.com
def test12():
    strs="126@126.mygene.com
" reg="\w+@(\w+.)+\w+" print re.match(reg,strs).group()
"\w+@(\w+.)+\w+",@後邊的「(\w+.)+」的意思是將1個或多個任意字母或數字做爲一個分組,1次或屢次這個分組,也就是說一次或屢次xxx.這樣的形式。
如此匹配的話仍是有遺漏,有的郵箱@前半部分是有特殊符號的,好比-_+.等,還須要包括這些。
三、郵箱包括特殊符號匹配,如liu-tian_89.hh@126.mygene.com
def test13():
    strs="liu-tian_89+hh@126.mygene.com"
    reg="\w+([-_+.]\w+)*\w+@(\w+.)+\w+"
    print re.match(reg,strs).group()

四、若是@後邊也有特殊符號呢,如liu-tian_89+hh@126.my-ge_ne.comclass

def test13():
    strs="liu-tian_89+hh@126.my-ge_ne.com"
    reg="\w+([-_+\.]\w+)*\w+@\w+([-_+\.]\w+)*\.\w+"
    print re.match(reg,strs).group()

須要注意的是,郵箱的結尾一定是.號跟字母或數字test

相關文章
相關標籤/搜索