文档章节

在正则表达式的上下文中,“懒惰”和“贪婪”是什么意思?

 技术盛宴
发布于 01/20 14:21
字数 620
阅读 222
收藏 0

有人可以用一种可以理解的方式解释这两个术语吗?


#1楼

贪婪意味着您的表情将匹配尽可能大的组,懒惰意味着它将匹配最小的组。 对于此字符串:

abcdefghijklmc

这个表达式:

a.*c

贪婪的匹配将匹配整个字符串,而惰性匹配将仅匹配第一个abc


#2楼

“ Greedy”表示匹配最长的字符串。

“惰性”表示匹配最短的字符串。

例如,贪婪h.+l'hell' 'hello'中的'hell'匹配,而懒惰h.+?l'hel'匹配。


#3楼

正则表达式

正则表达式中的标准量词是贪婪的,这意味着它们尽可能地匹配,仅根据需要返回以匹配正则表达式的其余部分。

通过使用惰性量词,表达式首先尝试最小匹配。


#4楼

贪婪会消耗尽可能多的东西。 从http://www.regular-expressions.info/repeat.html中,我们看到了尝试将HTML标签与<.+>匹配的示例。 假设您具有以下条件:

<em>Hello World</em>

您可能会认为<.+>.表示任何非换行符+表示一个或多个 )只会匹配<em></em> ,而实际上它会非常贪婪,并且从第一个开始<至最后> 。 这意味着它将匹配<em>Hello World</em>而不是您想要的。

使其变得懒惰( <.+?> )可以防止这种情况。 通过添加?+ ,我们告诉它重复尽可能少的次数 ,因此遇到的第一个>是我们要停止匹配的位置。

我鼓励您下载RegExr ,这是个很棒的工具,可以帮助您探索正则表达式-我一直都在使用它。


#5楼

取自www.regular-expressions.info

贪婪 :贪婪的量词首先尝试尽可能多地重复标记,然后逐渐放弃匹配,因为引擎回溯以找到整体匹配。

懒惰 :懒惰的量词首先根据需要重复标记几次,然后随着引擎通过正则表达式回溯以找到整体匹配项而逐渐扩展匹配项。

本文转载自:https://stackoom.com/question/9efV/在正则表达式的上下文中-懒惰-和-贪婪-是什么意思

粉丝 0
博文 1231
码字总数 0
作品 0
深圳
高级程序员
私信 提问
加载中

评论(0)

正则表达式-常用构造子列表

字符 表示单个字符。例如a,它将匹配字符串中第一次出现的字符a;它也可以匹配第二个 a,这必须是你告诉正则表达式引擎从第一次匹配的地方开始搜索。 可以使用特殊字符序列代表某些不可显示字...

tequliapop
2015/12/12
77
0
正则表达式高级技巧背后的关键概念[SM]

正则表达式(Regular Expression, abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是,简单的正则表达式对于一些高级运用,功...

未来十年
2012/01/19
0
0
Java正则系列: (2)量词

翻译说明 : 贪婪型, 最大匹配方式; : 懒惰型, 最小匹配方式; : 独占型, 全部匹配方式; 也翻译为[]; 这3种量词, 是修饰量词的量词, 可以理解为正则格式重复的匹配类型。 量词 量词(Quantifier...

renfufei
2018/01/11
0
0
PHP中的另类奇葩 正则的讲解

一,什么是正则: 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语言基本上都有正则表达式,如JavaScript、java等。其实,...

君满楼001
2017/11/16
0
0
这是一篇男女老少入门精通咸宜的正则笔记

前言 说句实话的,自从我整理这篇笔记后,基本上项目里遇到的所有正则匹配的问题,不论多复杂,只要回过头看这篇笔记,理解透彻,基本上都能解决的。这里关于深内容的描述,我这边也举了不少...

pekonchan
2018/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何添加或更新查询字符串参数?

使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值? 我正在使用jquery进行客户端开发。 #1楼 我已经扩展了该解决方案,并将其与我发现的另一个解决方案...

技术盛宴
35分钟前
49
0
恭喜你,Get到一份 正则表达式 食用指南

先赞后看,养成习惯 前言 正则表达式 正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串...

鹿老师的Java笔记
35分钟前
40
0
《 Python编程快速上手:让繁琐工作自动化》分享下载

书籍信息 书名:《 Python编程快速上手:让繁琐工作自动化》 原作名:Automate the Boring Stuff with Python: Practical Programming for Total Beginners 作者: Albert Sweigart 豆瓣评分...

开始以后_
38分钟前
63
0
Java--代码执行顺序(静态初始化块,初始化块,构造函数)

先上结论 执行顺序:先执行静态初始化块,然后时初始化块,最后是构造函数 书写格式: 注意事项: 1. 静态初始化块   静态初始化块只在类首次加载时执行一次,同时静态初始化块只能给静态变...

fairy1674
41分钟前
39
0
第八课:《Linux就该这么学》课堂笔记

“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样—放进嘴里就甜味十足,而是需要从苦劳与艰辛中...

宣城热点科技
42分钟前
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部