手机版

如何使用正则表达式(regex)的贪婪模式和懒惰模式

时间:2021-09-30 来源:互联网 编辑:宝哥软件园 浏览:

正则表达式贪婪地匹配模式,对于初学者来说也容易出错。有时候需要匹配一段代码的内容,发现匹配与你想要的不一致。原来,这和贪婪有关。如下所示,让我们看看下面的例子:

什么是贪婪模式串?有:“H3 Abd/H3 BCD/H3/H3”。我们想匹配h3…/h3。正则表达式如下:

1.h3开头和结尾,“h3待加/H3”H3/H3都是普通角色。

2.中间可以出现任何字符,数字可以是0或更多。正则表达式可以使用:*, "."代表任何角色。默认模式与换行符不匹配。“*”在其前面重复0个或更多字符。

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

两个结果是一样的,这是我们不希望的。我们要从左边开始,先出现/h3,然后开始匹配。上面的模式是贪婪的,也是这种方式下正则表达式的默认匹配。默认情况下,重复字符和运算符都是贪婪模式,例如:*,{1,},{0,}都符合最大长度字符。正则表达式元字符,量词首先匹配字符串到最大值默认情况下,这些量词是:*,{m,n} .在匹配开始时,它直接匹配最长的字符串。

什么是偷懒模式?由于上述模式指示重复字符的数量,默认情况下元字符是贪婪模式。如果我们需要最小长度匹配,也就是懒模式,那么正则表达式怎么写呢?事实上,正则表达式中常见的方法是在表示重复字符的元字符后再添加一个元字符?“性格。上面的正则表达式可以写成:“h3。*?/h3”,或“h3”。{0,}?/h3”就可以了。

惰性模式,它匹配我们需要的字符串。

总结:正则表达式,这意味着字符串重复几个元字符,'?*、{} '都默认选择贪婪模式,并将字符串匹配到最大长度。要切换到惰性模式,只需在元字符“?”后再添加一个字符您可以切换到非贪婪模式(懒惰模式)。

版权声明:如何使用正则表达式(regex)的贪婪模式和懒惰模式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。