zoukankan      html  css  js  c++  java
  • 通过完善邮箱匹配来一步步学习正则表达

    首先,在学习之前先确定一下邮箱的格式,邮箱的一般格式为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()

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




  • 相关阅读:
    菜鸟学IT之四则运算升级版
    菜鸟学IT之简易四则运算程序开发
    菜鸟学IT分布式版本控制系统Git的安装与使用
    Javascript 编程范式
    【每日一题】2013年12月10日
    关于闭包的一些小东西
    【每日一题】2013年12月12日
    javascript学习计划
    新来挂号,以后就开始好好的维护这个博客了~
    【每日一题】2013年12月11日
  • 原文地址:https://www.cnblogs.com/6tian/p/5843418.html
Copyright © 2011-2022 走看看