问:说说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)
运行结果:11234567681


如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

python非贪婪正则表达式 python 非贪婪匹配_python杨辉三角