码迷,mamicode.com
首页 > 其他好文 > 详细

通过完善邮箱匹配来一步步学习正则表达

时间:2016-09-05 20:45:58      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

首先,在学习之前先确定一下邮箱的格式,邮箱的一般格式为xxx@xxx.xxx,其中xxx可为数字、字母、下划线_,中划线-,点号.,加号+等组成。

在看具体代码之前需要先了解一些基础知识

# []表示匹配字符集中的任意一个字符
# \w 表示匹配任何字母数字字符
# \s表示任何空格字符
# \d表示任何十进制数字
# +表示匹配1次或多次前面出现的正则表达
# *表示匹配0次或多次前面出现的正则表达
# (?:)表示一个匹配不用保存的分组

1、匹配最简单的邮箱格式,如liutian@126.com

def test11():
    strs="liutian@126.com."
    reg="\w+@\w+.\w+"
    print re.match(reg,strs).group()
"\w+@\w+.\w+"的意思是:1次或多次的任何字母数字@1次或多次的字母数字.一次或多次的字母数字。
如此匹配不完善,经常会有的邮箱会有多个后缀。
2、完善匹配,如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.这样的形式。
如此匹配的话还是有遗漏,有的邮箱@前半部分是有特殊符号的,比如-_+.等,还需要包括这些。
3、邮箱包括特殊符号匹配,如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()

4、如果@后边也有特殊符号呢,如liu-tian_89+hh@126.my-ge_ne.com

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()

需要注意的是,邮箱的结尾必定是.号跟字母或数字




通过完善邮箱匹配来一步步学习正则表达

标签:

原文地址:http://www.cnblogs.com/6tian/p/5843418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!