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

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




  • 相关阅读:
    .net同时执行多条sql语句(含事务功能)
    SQL标量值函数:小写金额转大写
    找出与某id相近的四条记录
    sql查询优化 索引优化
    半成品收发数量流程管控
    半成品进销存
    多表分页查询存储过程
    DataGridView数据用NPOI导出到Excel
    SQL事务+存储过程
    left join、right join和join的区别
  • 原文地址:https://www.cnblogs.com/6tian/p/5843418.html
Copyright © 2011-2022 走看看