匹配多个字符

匹配多个字符的相关格式

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
匹配前一个字符出现m次
匹配前一个字符出现从m到n次

示例1:*

需求:匹配出,一个字符串第一个字母为大写字符,后面都是小写字母并且这些小写字母可有可无

image-20180706160935782

image-20180706161014471

匹配任意位数的数字序列

image-20180705234007794

示例2:+

需求:匹配出,变量名是否有效

image-20180705234319978

image-20180705234707017

示例3:?

需求:匹配出,0到99之间的数字

image-20180705234955453

image-20180705235225910

示例4:{m}

不是以4、7结尾的手机号码(11位)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import re

tels = ["13100001234", "18912344321", "10086", "18800007777"]

for tel in tels:
    ret = re.match("1\d{9}[0-35-68-9]", tel)
    if ret:
        print(ret.group())
    else:
        print("%s 不是想要的手机号" % tel)

示例5:{m,n}

需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

image-20180705235449864

8-20位匹配结果:

image-20180705235551206

练一练

匹配邮箱地址

匹配出163的邮箱地址,且@符号之前有4到20位,例如hello@163.com

image-20180705235757314

image-20180705235834920