re 正则匹配的非贪婪匹配
非贪婪匹配
将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式。
?
如
abc.*?
abc.+?
非贪婪匹配:尽可能少的匹配
{n,}?
{,n}?
{n,m}?
*? # *号表示 *号前面的字符出现0--无数个 ?号表示最少匹配
+? # +号表示 +号前面的字符出现1--无数个
?? # ??表示0--1个 print(re.findall(r'ab{0,}', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
print(re.findall(r'ab{0,}?', 'aababbabbb')) # ['a', 'a', 'a', 'a'] print(re.findall(r'ab{,3}', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
print(re.findall(r'ab{,3}?', 'aababbabbb')) # ['a', 'a', 'a', 'a'] print(re.findall(r'ab{1,3}', 'aababbabbb')) # ['ab', 'abb', 'abbb']
print(re.findall(r'ab{1,3}?', 'aababbabbb')) # ['ab', 'ab', 'ab'] print(re.findall(r'ab*', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
print(re.findall(r'ab*?', 'aababbabbb')) # ['a', 'a', 'a', 'a'] print(re.findall(r'ab+', 'aababbabbb')) # ['ab', 'abb', 'abbb']
print(re.findall(r'ab+?', 'aababbabbb')) # ['ab', 'ab', 'ab'] print(re.findall(r'ab?', 'aababbabbb')) # ['a', 'ab', 'ab', 'ab']
print(re.findall(r'ab??', 'aababbabbb')) # ['a', 'a', 'a', 'a'] print(re.findall(r'', '')) # ['']
print(re.findall(r'a{0}', 'a')) # ['', ''] # 非贪婪匹配结合单个匹配结果是没有任何意义的
print(re.findall(r'b*?', 'bbbbbbbb'))
print(re.findall(r'(?:ab)*?', 'bbbbbbbb')) # 非贪婪匹配的应用场景,正则一定会有首尾标识,中间匹配的结果会有非贪婪匹配的语法
s = '<a>abc</a><a></a>'
print(re.findall(r'<.*>', s)) # ['<a>abc</a><a></a>']
print(re.findall(r'<.*?>', s)) # ['<a>', '</a>', '<a>', '</a>'] print(re.findall(r'<a>(.*)</a>', s)) # ['abc</a><a>']
print(re.findall(r'<a>(.*?)</a>', s)) # ['abc', '']
re 正则匹配的非贪婪匹配的更多相关文章
- Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配
Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); ...
- php正则贪婪匹配与非贪婪匹配一些例子
http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...
- PHP正则 贪婪匹配与非贪婪匹配
$str = ".abcdeabcde"; preg_match('/a.+?e/', $str, $match); print_r($match); Array ( [0] =& ...
- shell 中 贪婪匹配 和 非贪婪匹配
举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...
- re模块中的非贪婪匹配
python的re模块中有贪婪匹配和非贪婪匹配之分,当使用*时会匹配零个或多个,使用+时会匹配一个或多个.当使用?在前边特殊符号前时会进行非贪婪匹配,匹配零个或者一个,今天主要讨论非贪婪匹配中存在的坑 ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配
1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...
- VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- 正则表达式 整理(\w \s \d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $ \b 单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())
re.findall 匹配到正则表达式的字符,匹配到的每个字符存入一个列表,返回一个匹配到的所有字符列表 一. 匹配单个字符 import re # \w 匹配所有字母.数字.下划线 re.find ...
- str.replace()和re.sub()/calendar.month_abbr/re.subn()/upper和lower和capitalize/贪婪匹配和费贪婪匹配/re.S和re.DOTALL 笔记
str.replace()可以进行简单的替换 >>> a = 'one.txt, index.py, index.php, index.html, index.js' >> ...
随机推荐
- BZOJ3589 动态树[树剖/暴力/容斥]
操作0,显然直接线段树解决. 操作1,瓶颈在于重叠的链只算一次.在线段树上来看,如果一个区间被覆盖了,那么只算这个区间,子树里面也就不管了. 考虑对节点打标记来表示是否覆盖.但是,如果统一打完之后,并 ...
- 留言条.html .js来完成
let data = [{ username: "张桑0", time: "2017-09-07 12:00:00", text: "留言文本内容.& ...
- 小猿圈-IT自学人的小圈子 https://book.apeland.cn/details/54/
笔记链接 https://book.apeland.cn/details/54/ 学习视频 https://www.apeland.cn/python
- mysql router使用配置
mysql router使用配置 参考资料: https://www.jianshu.com/p/7fc8d77bea59 一.架构图 介绍: MySQL Router是处于应用client和dbse ...
- MySQL错误:ERROR 1067 (42000): Invalid default value for 'timestamp_field'
数据库报错 ERROR 1067 (42000): Invalid default value for 'start_time' 是因为数据库的配置有问题: 可以看到 NO_ZERO_IN_DA ...
- java服务宕机原因查询
背景 在java服务项目上线之后经常会出现宕机的情况 常见原因 内存溢出 1.查到服务进程号 [root@wms ~]# ps -ef|grep java root 6399 6069 0 08:57 ...
- nginx负载均衡 页面缓存
nginx的upstream目前支持4种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight ...
- POJ - 3162 Walking Race 树形dp 单调队列
POJ - 3162Walking Race 题目大意:有n个训练点,第i天就选择第i个训练点为起点跑到最远距离的点,然后连续的几天里如果最远距离的最大值和最小值的差距不超过m就可以作为观测区间,问这 ...
- 1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 输入二个 ...
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)(SDUT 3663)
Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1&l ...