三 正则匹配多个字符
示例1:*
* | 匹配前一个字符出现0次或多次,即可有可无 |
需求:匹配出一个字符串,其中第一个字母为大写字母,后面的字母为小写字母可以有0到多个
import re ret=re.match("[A-Z][a-z]*","M") print(ret.group()) ret=re.match("[A-Z][a-z]*","MnnM") print(ret.group()) ret = re.match("[A-Z][a-z]*","Aabcdef") print(ret.group())
运行效果:
M
Mnn
Aabcdef
进程已结束,退出代码为 0
示例2:+
+ | 匹配前一个字符出现1次或多次,即至少有1次 |
需求:匹配一个字符串,第一个字符是t,最后一个字符串是o,中间有1到多个字符
import re match_obj = re.match("t.+o", "two") #说明 .代表任意字符 .+代表任意字符出现1次或者多次 if match_obj: print(match_obj.group()) else: print("匹配失败")
运行结果:
two
进程已结束,退出代码为 0
示例3:?
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
需求:匹配出这样的数据,网络传输协议可能是http,也可能是https,那么https中的s可能出现的次数是0次或者1次
import re match_obj = re.match("https?", "http") if match_obj: print(match_obj.group()) else: print("匹配失败")
运行结果:
http
进程已结束,退出代码为 0
示例4:{m}、{m,n}
需求:匹配出6位数密码,8到20位的密码,可以是大小写英文字母、数字、下划线
import re ret = re.match("[a-zA-Z0-9_]{6}", "12a3g45678") print(ret.group()) ret = re.match("[a-zA-Z0-9_]{8,20}", "1ad12f23s34455ff66") print(ret.group())
运行结果:
12a3g4
1ad12f23s34455ff66
进程已结束,退出代码为 0
小结
- *表示匹配前一个字符出现0次或者无限次,即可有可无
- +表示匹配前一个字符出现1次或者无限次,即至少有1次
- ?表示匹配前一个字符出现1次或者0次,即要么有1次,要么没有
- {m}表示匹配前一个字符出现m次
- {m,n}表示匹配前一个字符出现从m到n次
本文作者为BUG之神,转载请注明。