当前位置: 首页 > news >正文

正则表达式的独占模式,懒惰模式等有那些区别

正则表达式的独占模式、懒惰模式(也称为非贪婪模式)和贪婪模式(默认模式)在匹配行为上存在显著的区别。以下是这三种模式的详细解释和区别:

1、贪婪模式(Greedy):

默认情况下,正则表达式的匹配都会采用贪婪模式。

匹配器被强制要求第一次尝试匹配时读入整个输入串,如果第一次尝试匹配失败,则从后往前逐个字符地回退并尝试再次匹配,直到匹配成功或没有字符可回退。

贪婪模式下,会尽可能多的匹配符合正则表达式的内容。

2、懒惰模式(Lazy/Reluctant):

也称为非贪婪模式。

从输入串的首字符位置开始,在一次尝试匹配查找中只勉强地读一个字符,直到尝试完整个字符串。

懒惰模式尽可能少地匹配所搜索的字符串。

开启方法为正则表达式该部分后加上?,例如ab{1,3}?c,在匹配abc和abbc时均不会发生回溯。

3、独占模式(Possessive):

可以理解为不会回溯的贪婪模式。

在独占模式下,正则表达式尽可能长地去匹配字符串,一旦匹配不成功就会结束匹配而不会回溯。

使用方式:在量词后面加上加号(+),正则就变成了独占模式,例如ab{1,3}+c。

独占模式由于不会发生回溯,所以资源消耗较小,但匹配失败时不会像贪婪模式那样尝试其他可能性。

4、总结归纳:

贪婪模式会尽可能多地匹配字符,直到满足条件或没有字符可匹配。

懒惰模式会尽可能少地匹配字符,直到满足条件或已经匹配了整个字符串。

独占模式在匹配时会尝试最长的匹配,但如果匹配失败则不会回溯,因此它更加“坚决”和“直接”。

http://www.lryc.cn/news/409103.html

相关文章:

  • 【INTEL(ALTERA)】Quartus® Prime Pro Edition 软件 v24.2 中,哪些 Agilex™ 5 IP 功能的硬件验证有限?
  • Lua编程
  • 2019数字经济公测大赛-VMware逃逸
  • 如何改桥接模式
  • 江科大/江协科技 STM32学习笔记P13
  • loadrunner录制解决提示安全问题
  • 为什么要读写分离?如何实现业务系统读写分离?
  • C#基础——类、构造函数和静态成员
  • hadoop学习(二)
  • WXZ196微机消谐装置的运行方式了解一下
  • 单链表的建立
  • Shell脚本编程学习
  • 从宏基因组量化细菌生长动态
  • Linux---git工具
  • 【JavaScript】函数的动态传参
  • 从0到1,AI我来了- (4)AI图片识别的理论知识-II
  • 2024 Java 高分面试宝典 一站式搞定技术面
  • MongoDB - 聚合操作符 $eq、$gte、$in、$sum、$avg
  • C语言 | Leetcode C语言题解之第279题完全平方数
  • 在appium中,如何通过匹配图片来进行断言?
  • 昇思25天学习打卡营第21天|CV-Shufflenet图像分类
  • python 图片转文字、语音转文字、文字转语音保存音频并朗读
  • SSRF (服务端请求伪造)
  • SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN
  • [网鼎杯 2020 朱雀组]Nmap(详细解读版)
  • 【React】详解“最新”和“最热”切换与排序
  • BUUCTF [MRCTF2020]Ezpop
  • RV1126 Linux 系统,接外设,时好时坏(一)应该从哪些方面排查问题
  • Vue实现简单小案例
  • 【MATLAB APP】建立独立桌面APP