Python正则表达式:最短匹配

目录[-]

最短匹配应用于:假如有一段文本,你只想匹配最短的可能,而不是最长。

例子

比如有一段html片段,<a>this is first label</a><a>the second label</a>,如何匹配出每个a标签中的内容,下面来看下最短与最长的区别。

代码

>>> import re
>>> str = '<a>this is first label</a><a>the second label</a>'

>>> print re.findall(r'<a>(.*?)</a>', str)  # 最短匹配
['this is first label', 'the second label']

>>> print re.findall(r'<a>(.*)</a>', str)
['this is first label</a><a>the second label']

解释

例子中,模式r'<a>(.*?)</a>的意图是匹配被< a>和< /a>包含的文本,但是正则表达式中*操作符是贪婪的,因此匹配操作会查找出最长的可能。 但是在*操作符后面加上?操作符,这样使得匹配变成非贪婪模式,从而得到最短匹配。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏书山有路勤为径

生成括号

已知n组括号,开发一个程序,生成这n组括号所有的合法的组合可能例如:n = 3 结果为:["((())) "," (()())","()(()) "," ()...

8610
来自专栏章鱼的慢慢技术路

LeetCode_832. Flipping an Image_Solution

题目所描述的意思是对每个数组先进行取反,并且对数组中的每个元素进行取反转换,所以一共要执行两个操作。

9120
来自专栏Python小屋

Python从序列中选择k个不重复元素

集合中的元素不允许重复,Python集合的内部实现为此做了大量相应的优化,判断集合中是否包含某元素时比列表速度快很多。下面的代码用于返回指定范围内一定数量的不重...

35960
来自专栏包子铺里聊IT

关于String Edit Distance问题的总结

包子IT面试培训 助你拿到理想的offer! [例题1] 找到一个字典中与当前输入string的edit distance [1],(edit distance...

37180
来自专栏搞前端的李蚊子

JS使用循环按指定倍数分割数组组成新的数组的方法

 今天一个新人同事问了我一个问题,就是有一个像下边这种不知道具体长度的数组,想以每4个为一组,重新组合为一个二维数组,很简单的需求只需要用到一个循环再去取余数就...

48170
来自专栏TungHsu

这或许是对小白最友好的python入门了吧——16,输入文本

大部分时候我们需要的数值元素等都不是给定的,而是需要用户输入的,我们应该怎么做呢? 这个是时候我们就要用input这个函数: score = input("输入...

28060
来自专栏ACM算法日常

leetcode题解 | 78. 子集

这个题目很容易想到使用DFS的方式来解决,因为组合的题容易产生转移方程,这样也是没有什么问题的。

17430
来自专栏蜉蝣禅修之道

基于Huffman编码的压缩软件的Python实现

24640
来自专栏云霄雨霁

排序----选择排序

17000
来自专栏kalifaの日々

C++构造无向图&求最短路径源码

用vector<edge> es[MAX]表示点,每个点队列里放着点的相邻边和到边的距离。 以下源码经过测试可运行 #include <iostream> #i...

33050

扫码关注云+社区

领取腾讯云代金券