正则表达式(regex) 贪婪模式、懒惰模式使用方法

正则表达式贪婪匹配模式,对于初学者,往往也很容易出错。有时候需要匹配一个段代码内容,发现匹配与想要不一致。发现原来,跟贪婪模式有关系。如下,我们看下例子:

什么是贪婪模式
字符串有: “<h3>abd</h3><h3>bcd</h3>”,我们想匹配<h3>…</h3>内容,正则表达式如下:

1、h3开头与结尾,”<h3>待添加</h3>” <h3></h3>都作为普通字符

2、中间可以出现任意字符,个数可以是0个或者多个,正则表达式可以用:.* ,“.”代表任意字符,默认模式不匹配换行,”*” 重复前面字符0个或者多个。

3、最终我们考虑结果将是:”<h3>.*</h3>” ,也可以是:”<h3>.{0,}</h3>” {}代表,重复前面指定个数字符,以下用到是,正则表达式调试工具截图,软件可以看:正则表达式工具推荐(学习工具、测试工具)

2种结果都一样,这是我们不希望得到的,我们希望从左边开始,第一个出现</h3>,就开始匹配。以上这种模式,是贪婪模式,也是正则表达式默认以这个方法匹配。表示重复字符,操作符,默认都是贪婪模式,如:.*,.+,.{1,},.{0,} 都会匹配最大长度字符。正则表达式元字符,量词默认首先最大匹配字符串,这些量词有:+,*,?,{m,n} 。一开始匹配,就直接匹配到最长字符串。

什么是懒惰模式
既然上面几种,表示字符重复个数,元字符默认都是贪婪模式。如果,我们需要最小长度匹配,也就是懒惰模式,怎么样写正则表达式呢?其实,正则表达式里面通用方法是,在表示重复字符元字符,后面加多一个”?”字符即可。上面正则表达式可以写成:”<h3>.*?</h3>”,或者”<h3>.{0,}?</h3>” 都可以。

懒惰模式,就匹配到我们需要字符串了。

总结:正则表达式,表示字符串重复个数元字符,'?,+,*,{}' 默认都会选择贪婪模式,会最大长度匹配字符串,而要切换到懒惰模式,就只是在该元字符,后面加多一个”?” 即可切换到非贪婪模式(懒惰模式)。

时间: 2024-11-10 00:48:52

正则表达式(regex) 贪婪模式、懒惰模式使用方法的相关文章

正则表达式(regex) 贪婪模式、懒惰模式使用方法_正则表达式

正则表达式贪婪匹配模式,对于初学者,往往也很容易出错.有时候需要匹配一个段代码内容,发现匹配与想要不一致.发现原来,跟贪婪模式有关系.如下,我们看下例子: 什么是贪婪模式 字符串有: "<h3>abd</h3><h3>bcd</h3>",我们想匹配<h3>-</h3>内容,正则表达式如下: 1.h3开头与结尾,"<h3>待添加</h3>" <h3></h

正则表达式单行、多行模式简介(使用说明)_正则表达式

继上几篇正则表达式相关说明(详情:正则表达式 ),我们今天继续讨论下,它的单行,多行模式使用,及容易出现错误地方.单行,多行模式,都是正则表达式的模式修饰符里面出现的参数.目前常用正则表达式都有该使用选项,如:javascript 正则表达式,一般是:"/正则表达式匹配字符/修饰符" ,最后一个"/" 后面是修饰符.然后,php也是类似的,c#,python等,一般调用正则表达式的匹配函数,都有一个另外选项的,设置模式. 单行.多行模式容易出现理解错误 为什么说,容

正则表达式单行、多行模式简介(使用说明)

继上几篇正则表达式相关说明(详情:正则表达式 ),我们今天继续讨论下,它的单行,多行模式使用,及容易出现错误地方.单行,多行模式,都是正则表达式的模式修饰符里面出现的参数.目前常用正则表达式都有该使用选项,如:javascript 正则表达式,一般是:"/正则表达式匹配字符/修饰符" ,最后一个"/" 后面是修饰符.然后,php也是类似的,c#,python等,一般调用正则表达式的匹配函数,都有一个另外选项的,设置模式. 单行.多行模式容易出现理解错误 为什么说,容

正则表达式之 贪婪与非贪婪模式详解(概述)_正则表达式

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: "{m,n}"."{m,}"."?"."*"和"+". 在一些使用NFA引擎的语言中,在匹配优先量词后加上"?",即变成属于非

正则表达式之 贪婪与非贪婪模式详解(概述)

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: "{m,n}"."{m,}"."?"."*"和"+". 在一些使用NFA引擎的语言中,在匹配优先量词后加上"?",即变成属于非

懒惰模式的识别

公司最近让我负责开发一款APP,以增加用户粘性.在开发APP之前与老板讨论先在哪个平台上实体.老板直言先上IOS.我问为何,老板回复:"我们APP主要针对的客户是土地投资拓展人员,这群人,都是土豪,谁用安卓?再举个简单的例子,你看我们公司好多人用IOS?"于是,我们就开始了IOS的准备.然而,当我们在走访用户的时候,发现被老板坑哭了,因为我们前期走访的10个用户中,8个安卓,1个安卓与IOS的平板,有效长期使用IOS的,只有1个.这也导致了我们的第一个版本的直接用户,不能是我们前期走访

《叩响C#之门》正则表达式 (三) 贪婪与懒惰

第 20章 正则表达式 20.1 字符匹配 20.2 可选字符集 20.3 或匹配 20.4 数量限定符 20.5 贪婪和懒惰 20.6 定位符 20.7 分组和后向引用 20.8 替换文本 20.9 非捕获分组和预查 1.非捕获分组?: 2.正向预查?= 3.反向预查?<= 4.负正向预查?! 5.负反向预查?<! 6.注释# 20.10 正则表达式的类 20.11 正则表达式的选项 20.12 练习:验证用户输入

Win7系统使用兼容模式运行程序的方法

  目前,很多电脑用户使用的Win7系统,虽然说Win7系统对大部分软件程序具有兼容性,但是,还是有个别软件程序因为Win7系统不兼容而不能使用.今天,小编就跟大家Win7系统使用兼容模式运行软件程序的方法,一起来看看吧! 兼容性疑难解答 Win7系统使用兼容模式运行程序的方法: 在有问题的软件的图标(注意不是快捷方式)上点击右键,选择"兼容性疑难解答". 系统会自动检测,稍等片刻. win7系统下载 ghost win7 win7旗舰版; 接下来会出来右图的对话框,选择"尝

谈谈动态、静态、伪静态三种网址模式的优化设置方法

摘要: 对于网站的网址而言,常见的网址模式主要分为三种:动态.静态.伪静态.而相应的每种网址模式又对应着相应的页面类型,就是咱们常说的静态页.动态页.伪静态页.当然在网站 对于网站的网址而言,常见的网址模式主要分为三种:动态.静态.伪静态.而相应的每种网址模式又对应着相应的页面类型,就是咱们常说的静态页.动态页.伪静态页.当然在网站优化中,站长都知道,其中静态模式的网址对于优化和用户体验都非常有帮助的,同时对于提高自己的网站知名度也是相当不错的.但是并非所有的网站都使用静态模式的网址就合适,就如