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

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




  • 相关阅读:
    面向对象 委托
    面向对象 继承 接口
    C# 面向对象 , 类与对象
    C# 知识点回顾
    SQL 数据库知识点回顾
    C# 10 总复习
    spring boot jpa 表关联查询分组 group by 去重
    钉钉新增考勤组 设置考勤规则
    elasticsearch 学习之父子关联查询 parent/child
    Elasticsearch 查询学习
  • 原文地址:https://www.cnblogs.com/6tian/p/5843418.html
Copyright © 2011-2022 走看看