正则2 匹配开头结尾,分组转义

匹配结尾开头
简单判断email,转义
分组

匹配结尾开头

import re
def  main():
    names = ["age","_age","loge","age1","a_age","age_1_","age!","a#123","______"]
    for name in names:
        ret = re.match(r"[a-zA-Z_][a-zA-Z0-9_]*",name)
        if ret:
            print ("变量名:%s 符合要求 . . .%s" % (name,ret.group()))
        else:
            print ("变量名: %s 不符合要求 . . ." % name)

if __name__ == '__main__':
    main()

在这里插入图片描述
可以看到age!,a#123满足要求,按照正则逻辑应该是不满足的。因为match判头不判尾 到age就结束了 后面自然打出来,那么怎么样才能判头判尾。

字符功能
^匹配字符串开头
$匹配字符串结尾

$加上就ok了

 ret = re.match(r"[a-zA-Z_][a-zA-Z0-9_]*$",name)
import re
def  main():
    names = ["age","_age","loge","age1","a_age","age_1_","age!","a#123","______"]
    for name in names:
        ret = re.match(r"[a-zA-Z_][a-zA-Z0-9_]*$",name)
        if ret:
            print ("变量名:%s 符合要求 . . .%s" % (name,ret.group()))
        else:
            print ("变量名: %s 不符合要求 . . ." % name)

if __name__ == '__main__':
    main()

在这里插入图片描述


简单判断email,转义

判断163邮箱地址

代码:

import re

def main():
    email = input("请输入一个邮箱地址:")
    ret = re.match(r"[a-zA-Z_0-9]{4,20}@163.com",email)
    if ret:
        print ("%s符合要求. . . ." % email)
    else:
        print ("%s不符合要求. . . ." % email)

if __name__ == '__main__':
    main()
注意match判头不判尾,所以在com后面多加也会符合要求在这里插入图片描述
注意.com中的.

如果理解成匹配单个字符,那么1234@163Acom也是可以的
在这里插入图片描述

所以这个时候需要$判尾,所以这时候需要把.转义

\ . 前面加上反斜杠就是转义


分组

字符功能
|匹配左右任意一个表达式
(ab)将括号中字符作为一个分组
\num引用分组num匹配到的字符串
(?p)分组起别名
(?P=name)引用别名为name分组匹配到的字符串
判断163邮箱地址和126地址(分组可以用来取数据)
把163和126地址分组 |相当于or的作用
ret = re.match(r"[a-zA-Z_0-9]{4,20}@(163|126).com",email)
ret.group(1)  //输出将是第一个分组里面的数据 这个示例是163或者126
多加几个分组
ret = re.match(r"([a-zA-Z_0-9]){4,20}@(163|126).com",email)
ret.group(1)  //输出将是第一个分组里面的数据 这个示例是[a-zA-Z_0-9]
ret.group(2)  //输出将是第一个分组里面的数据 这个示例是163或者126
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值