说说Python中贪婪和非贪婪匹配?

简介: 公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。


废话不多说,开始今天的题目:


问:说说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

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


相关文章
|
1月前
|
算法 搜索推荐 调度
Python怎么实现贪婪排名算法
Python怎么实现贪婪排名算法
23 0
|
5月前
|
Python
138 python高级 - 正则表达式(贪婪和非贪婪)
138 python高级 - 正则表达式(贪婪和非贪婪)
23 0
|
8月前
|
Python
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
59 2
|
人工智能 编译器 Python
Python re 正则表达式 数据匹配提取 基本使用
模式字符串使用特殊的语法来表示一个正则表达式: 字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 正则表达式通常都包含反斜杠"\\"以及小括号"\(\)",模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。
223 0
Python re 正则表达式 数据匹配提取 基本使用
python——正则表达式(匹配对象)
python——正则表达式(匹配对象)
|
SQL Python
Python基础记录下字符串模糊匹配的方式
使用Python的difflib库中get_close_matches方法
207 0
Python基础记录下字符串模糊匹配的方式
|
Python
【Python零基础入门篇 · 39】:贪婪匹配和非贪婪匹配、原生字符串
【Python零基础入门篇 · 39】:贪婪匹配和非贪婪匹配、原生字符串
100 0
【Python零基础入门篇 · 39】:贪婪匹配和非贪婪匹配、原生字符串
|
Python
【Python零基础入门篇 · 25】:正则基础、正则的高级用法、贪婪匹配与非贪婪匹配、原生字符串
【Python零基础入门篇 · 25】:正则基础、正则的高级用法、贪婪匹配与非贪婪匹配、原生字符串
178 0
【Python零基础入门篇 · 25】:正则基础、正则的高级用法、贪婪匹配与非贪婪匹配、原生字符串
|
PHP Python
Python、PHP:手机号匹配正则表达式
Python、PHP:手机号匹配正则表达式
148 0
Python、PHP:手机号匹配正则表达式
|
Python
Python编程:fuzzywuzzy字符串模糊匹配
Python编程:fuzzywuzzy字符串模糊匹配
284 0

热门文章

最新文章