美文网首页
Python学习路线:定义实现最短匹配的正则表达式

Python学习路线:定义实现最短匹配的正则表达式

作者: EchoPython | 来源:发表于2019-08-14 14:03 被阅读0次

Python学习路线:定义实现最短匹配的正则表达式


在这里插入图片描述

1、需求

我们正在尝试用正则表达式对文本模式做匹配,但识别出来的是最长的可能匹配。相反,我们想将其修改为最短的可能匹配。

2、解决方案

这个问题通常会在匹配的文本被一对开始和结束的分隔符包起来的时候出现(例如带引号的字符串),为了说明这个问题,请看下面实例:

import re
str_pat=re.compile(r'\"(.*)\"')
text1='mark say "love"'
text2='mark say "love",jingjing say "yes"'
print(str_pat.findall(text1))
print(str_pat.findall(text2))

结果

['love']
['love",jingjing say "yes']

在这个例子中,模式r’"(.)"'尝试去匹配包含在引号中的文本。但是,操作符在正则表达式中采用的是贪心策略,所以匹配过程是基于找出最长的可能匹配来进行的。所以上面才会出现【love",jingjing say "yes】这个匹配结果。
要解决这个问题,只要在模式中的*操作符后面加上?修饰符就可以了。

示例:

import re
str_pat=re.compile(r'\"(.*?)\"')
text1='mark say "love"'
text2='mark say "love",jingjing say "yes"'
print(str_pat.findall(text1))
print(str_pat.findall(text2))

如果你依然在编程的世界里迷茫,
不知道自己的未来规划,
对python感兴趣,
这里推荐一下我的学习交流圈QQ群:895 797 751,
里面都是学习python的,

结果:

['love']
['love', 'yes']

这么做使得匹配过程不会以贪心方式进行,也就会产生最短的匹配了。

3、分析

本节提到了一个当编写还有句点【.】字符的正则表达式常会遇到的问题。为了解决最长匹配问题,让匹配变为最短匹配,需要在*或+后加上一个【?】。

后面的Python学习路线在下期为大家更新!

相关文章

  • Python学习路线:定义实现最短匹配的正则表达式

    Python学习路线:定义实现最短匹配的正则表达式 1、需求 我们正在尝试用正则表达式对文本模式做匹配,但识别出来...

  • python的正则表达式

    python提供了实现正则表达式的re模块。 正则表达式的匹配字符: python的re模块常用函数 1.comp...

  • Regex

    开源中国正则表达式测试工具 常用的匹配规则 python的re库提供了整个正则表达式的实现 修饰符 在网页匹配中,...

  • Django URL传参

    1. 正则表达式匹配传参: 链接网页形如:/list/python/时,通过正则表达式匹配到字符串"python"...

  • re模块的match和search的区别

    正则表达式 首先正则表达式和python没有任何的关系,是匹配字符串的一种规则 官方定义:正则表达式是对字符串操作...

  • Python实用技法第26篇:定义实现最短匹配的正则表达式

    1、需求 我们正在尝试用正则表达式对文本模式做匹配,但识别出来的是最长的可能匹配。相反,我们想将其修改为最短的可能...

  • 判断一个字符串是否是合法ip

    此题目可以使用正则表达式匹配或者字符串匹配方法进行判断 思路: python2.7正则表达式解法: python2...

  • 正则表达式

    什么是正则表达式 正则表达式,主要是通过定义正确的规则从目标字符串中匹配符合规则的数据,python语言支持正则操...

  • Python简单爬虫 - 正则表达式

    Python爬虫快速上手,使用正则表达式匹配出网页中图片的URL,实现网页图片的批量下载: 007 - Pytho...

  • 2016/12/26 字典

    字典: 带有单词列表以及单词匹配定义的一本书,Python也是如此定义,通过字典实现键值匹配。既然是字典,自然不会...

网友评论

      本文标题:Python学习路线:定义实现最短匹配的正则表达式

      本文链接:https://www.haomeiwen.com/subject/wuygjctx.html