Python正则表达式:最短匹配

最短匹配应用于:假如有一段文本,你只想匹配最短的可能,而不是最长。

例子

比如有一段html片段,'<a>this is first label</a><a>the second label</a>',如何匹配出每个a标签中的内容,下面来看下最短与最长的区别。

代码

>>> import re
>>> str = '<a>this is first label</a><a>the second label</a>'

>>> print re.findall(r'<a>(.*?)</a>', str)  # 最短匹配
['this is first label', 'the second label']

>>> print re.findall(r'<a>(.*)</a>', str)
['this is first label</a><a>the second label']

解释

例子中,模式r'(.*?)'的意图是匹配被和包含的文本,但是正则表达式中*操作符是贪婪的,因此匹配操作会查找出最长的可能。
但是在*操作符后面加上?操作符,这样使得匹配变成非贪婪模式,从而得到最短匹配。

转载于:https://www.cnblogs.com/jhao/p/5989241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值