正則表達式re中的贪心算法和非贪心算法 在python中的应用
之前写了一篇有关正則表達式的文章。主要是介绍了正則表達式中通配符 转义字符 字符集 选择符和子模式 可选项和反复子模式 字符串的開始和结尾 ,有兴趣的能够查看博客内容。
此文章主要内容将要介绍re中的贪心和非贪心算法:
贪心:
使用 .* 匹配字符串
当中标点 . 表示通配符,能够用来匹配除换行符之外的随意符号。* 为反复子模式,同意模式反复0次或者多次。
贪心算法将会依照尽可能大的原则去匹配字符串。
非贪心:
使用 .*?
匹配字符串
当中标点 . 表示通配符,能够用来匹配除换行符之外的随意符号,* 为反复子模式,同意模式反复0次或者多次;?
为可选项。
举例说明:
使用贪心
import re
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Consolas';font-size:12.8pt;"><pre name="code" class="python">s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif" r=re.compile('xx.*xx') content=r.findall(s) print content
#输出结果 尽可能多地去匹配
['xxIxxefahxxlovexxhoghexxpythonxx']
import re
s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif" r=re.compile('xx.*xx') content=r.findall(s) print content
#输出结果
['xxIxx', 'xxlovexx', 'xxpythonxx']
s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif" r=re.compile('xx(.*?)xx') content=r.findall(s) print content
#输出结果
['I', 'love', 'python']
这里使用(.*?)的()括起来的内容为子模式 用来输出
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步