三 正则表达式匹配多个字符

BUG之神 98

三 正则匹配多个字符

三 正则表达式匹配多个字符

示例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次

分享