小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
废话不多说,开始今天的题目:
问:说说Python中贪婪和非贪婪匹配?
答:Python 中默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
而非贪婪匹配:与贪婪匹配相反,非贪婪匹配在匹配字符串时总是尝试匹配尽可能少的字符。
只需要在量词 "*","?","+","{m,n}" 后面直接加上一个问号”?”,就可以使贪婪变成非贪婪。
python的正则表达式中的量词
符号 | 描述 |
---|---|
* | 匹配零次或多次 |
+ | 匹配一次或多次 |
? | 匹配一次或零次 |
{m} | 重复m次 |
{m,n} | 重复m到n次(m - n-1),其中n可以省略,表示m到任意次 |
下面用个简单的代码给大家看一下:
import re
num = '123456768'
# 匹配一串数字,只匹配到了一个
result01 = re.search(r"\d",num).group()
print(result01)
# 增加了 + 号之后,就可以匹配多个了,此时可以算是贪婪模式
result02 = re.search(r"\d+",num).group()
print(result02)
# 那么想要变回非贪婪的话,只要增加一个?号即可
result03 = re.match(r"\d+?",num).group()
print(result03)
运行结果:
1
123456768
1
如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有