正则表达式——贪婪模式和非贪婪模式

在正则表达式中,存在两种匹配模式。

  1. 贪婪模式:正则表达式,在符合条件前提下,会尽可能多的匹配结果
  2. 懒惰模式:在正则表达式,如果符合条件的前提下,会尽可能少的匹配。

Python中正则表达式默认是贪婪模式(个别语言也可能是非贪婪模式),贪婪模式就是总会尝试匹配到更多的字符。非贪婪模式则反之,总是尝试匹配尽可能少的字符。
在*、?、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式。

*?重复任意次,但尽可能少重复
+?重复一次或更多次,但尽可能少重复
??重复0次或1次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
{n,}?重复n次以上,但尽可能少重复

案例

>>>content="<table><tr><td>大家好</td><td>大家好</td><td>大家好</td><td>大家好</td></tr></table>"
>>>re.findall(r"<td>(.*)</td>",content)  #贪婪模式
['大家好</td><td>大家好</td><td>大家好</td><td>大家好']
>>>re.findall(r"<td>(.*?)</td>",content) #非贪婪模式
['大家好', '大家好', '大家好', '大家好']

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值