表示数量

匹配多个字符的相关格式

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

示例1:*

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

#coding=utf-8
import re

ret = re.match("[A-Z][a-z]*","Mm")
ret.group()

ret = re.match("[A-Z][a-z]*","Aabcdef")
ret.group()

运行结果:

示例2:+

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

#coding=utf-8
import re

ret = re.match("[a-zA-Z_]+[\w_]*","name1")
ret.group()

ret = re.match("[a-zA-Z_]+[\w_]*","_name")
ret.group()

ret = re.match("[a-zA-Z_]+[\w_]*","2_name")
ret.group()

运行结果:

示例3:?

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

#coding=utf-8
import re

ret = re.match("[1-9]?[0-9]","7")
ret.group()

ret = re.match("[1-9]?[0-9]","33")
ret.group()

ret = re.match("[1-9]?[0-9]","09")
ret.group()

运行结果:

示例4:{m}

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

#coding=utf-8
import re

ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
ret.group()

ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
ret.group()

运行结果:

练一练

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