Python进阶之路 高级编程 正则表达式-重复、可选和特殊字符

重复、可选和特殊字符

正则表达式中最常见的就是匹配一些重复的字符串,例如,匹配3个连续出现的a(aaa符合要求),或匹配至少出现一个0的字符串(0、00、000都符合要求)。要对这种重复模式进行匹配,需要使用两个符号:"*""+"。其中,"*"表示字符串出现0次到n次,"+"表示字符串出现1到n次。

s = 'a*'	
strlist = ['','a','aa','baa']
for value in strlist:
    m = re.match(s,value)
    print(m)

在上面的代码中,a后面使用*进行修饰,这就意味着该模式会匹配0到n个a,也就是说,’’、‘a’、‘aa’、‘aaa’都可以匹配成功。所以很容易理解为什么strlist列表中前三个元素可以匹配成功。但是,为什么’baa’也可以匹配成功呢?这是因为'a*'可以匹配空串,而任何字符串都可以认为是以空串作为前缀的,所以’baa’只是空串的后缀,因此'a*'可以成功匹配’baa’。

s = 'a+'
strlist = ['','a','aa','baa']
for value in strlist:
    m = re.match(s,value)
    print(m)

如果对’a’使用"+"符号,就意味着’a’至少要出现1次,所以空串自然无法匹配成功,这就是’'和’baa’都无法匹配成功的原因。

前面的例子都是重复一个字符,如果要想将多个字符作为一组重复,需要用一对圆括号将这个字符串括起来。

s = '(abc)+'	
print(re.match(s,'abcabcabc'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值