非贪婪匹配

将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式。

?

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 正则匹配的非贪婪匹配的更多相关文章

  1. Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

    Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   ...

  2. php正则贪婪匹配与非贪婪匹配一些例子

    http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...

  3. PHP正则 贪婪匹配与非贪婪匹配

    $str = ".abcdeabcde"; preg_match('/a.+?e/', $str, $match); print_r($match); Array ( [0] =& ...

  4. shell 中 贪婪匹配 和 非贪婪匹配

    举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...

  5. re模块中的非贪婪匹配

    python的re模块中有贪婪匹配和非贪婪匹配之分,当使用*时会匹配零个或多个,使用+时会匹配一个或多个.当使用?在前边特殊符号前时会进行非贪婪匹配,匹配零个或者一个,今天主要讨论非贪婪匹配中存在的坑 ...

  6. 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配

    1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...

  7. VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  8. 正则表达式 整理(\w \s \d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $ \b 单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())

    re.findall  匹配到正则表达式的字符,匹配到的每个字符存入一个列表,返回一个匹配到的所有字符列表 一. 匹配单个字符 import re # \w 匹配所有字母.数字.下划线 re.find ...

  9. 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' >> ...

随机推荐

  1. Atcoder CODE FESTIVAL 2016 Final G - Zigzag MST[最小生成树]

    题意:$n$个点,$q$次建边,每次建边选定$x,y$,权值$c$,然后接着$(y,x+1,c+1),(x+1,y+1,c+2),(y+1,x+2,c+3),(x+2,y+2,c+4)\dots$(画 ...

  2. 基于LVM 测试磁盘写性能.md

    准备工作 /dev/sdb 创建一个卷组,基于卷组创建5个逻辑卷,各100G 在10.10.88.214 新建5台虚拟机,每台虚拟机用到lvm建的逻辑卷 dd 压测 在每台虚拟机上执行dd 命令: d ...

  3. vue、Element 点击按钮以弹窗形式预览pdf文件

    直接上代码吧 <div > <el-button type="success" size="small" @click="isVie ...

  4. phpstorm快捷键和激活

    点击PHP中文网->PHPstorm激活, 按照步骤激活 今天遇到了不能激活的情况, your activation code could not be validated.这个解决方法是把上面 ...

  5. Linux安装—IP设置

    IP设置 务必不要把Linux的IP设置为和我们的真实机位于同一网段(这可能会跟其他机器造成冲突) 具体操作是:在安装虚拟机时Network Type设置选择:Use Host-Only networ ...

  6. CF #366 DIV2 C. Thor 模拟 queue/stack降低复杂度

    C. Thor time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  7. Java集合框架之简述

    Java集合框架简述 Java中的集合类是一种工具类,就像是容器,存储任意数量的具有共同属性的对象,集合框架是一个用来代表和操纵集合的统一架构,包含如下部分: 1.接口: 接口是代表集合的抽象数据类型 ...

  8. linux端口释放

    查看linux连接端口范围 cat /proc/sys/net/ipv4/ip_local_port_range 调低端口释放等待时间 echo 20 >  /proc/sys/net/ipv4 ...

  9. typedef void(*Fun) (void)是什么意思 函数指针(回调函数) 和函数对象总结

    https://blog.csdn.net/FreeApe/article/details/49124043 bool (*pf)(const string &,const string &a ...

  10. vue 2.x 的 v-bind 指令的 .prop 事件修饰符详解

    vue 官方文档对 .prop 修饰符的解释是: 使用例子: 那么,具体的原理和用法是什么呢?这要从 html 的 DOM node 说起. 在 html 标签里,我们可以定义各种 attribute ...