正则表达式中贪婪与懒惰匹配

简介: 当正则表达式中包含能接受重复的限定符(指定数量的代码,例如*,{5,12}等)时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。如对于一段文本 This is the first line.This is the second line.This is the third line.       用^[\w\W]+$ 匹配会得到整个文本段,由于Regex引擎是贪婪的,它会尽可能的匹配多的选项,知道匹配完。

      当正则表达式中包含能接受重复的限定符(指定数量的代码,例如*,{5,12}等)时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。如对于一段文本

This is the first line.
This is the second line.
This is the third line.

      用^[\w\W]+$ 匹配会得到整个文本段,由于Regex引擎是贪婪的,它会尽可能的匹配多的选项,知道匹配完。

     有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。如同样用上面一段文本,用^[\w\W]+?$模式进行匹配,匹配到第一个马上返回,不再继续进行查找,所以得到结果:

     This is the first line.

     

相关文章
|
PHP 开发者
你见过这些正则表达式中奇奇怪怪的匹配模式吗 _ 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
一篇文章让你清楚的了解正则表达式中奇奇怪怪的匹配模式-- 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
81 1
你见过这些正则表达式中奇奇怪怪的匹配模式吗 _ 贪婪匹配、懒惰匹配 、禁止贪婪匹配!
|
6月前
|
机器学习/深度学习 Java 索引
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
65 0
|
6月前
|
数据采集 Java API
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
|
Python
138 python高级 - 正则表达式(贪婪和非贪婪)
138 python高级 - 正则表达式(贪婪和非贪婪)
49 0
|
Python
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
81 2
|
Linux Windows
最详解的正则表达式------贪婪和非贪婪、转义符、分组
贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。 非贪婪模式只被部分NFA引擎所支持
143 0
|
Go Python
全网最易懂的正则表达式教程(8 )- 贪婪模式和非贪婪模式
全网最易懂的正则表达式教程(8 )- 贪婪模式和非贪婪模式
309 0
全网最易懂的正则表达式教程(8 )- 贪婪模式和非贪婪模式
|
Python
盘点Python正则表达式中的贪婪模式和非贪婪模式
盘点Python正则表达式中的贪婪模式和非贪婪模式
163 0
盘点Python正则表达式中的贪婪模式和非贪婪模式
正则表达式懒惰贪婪和replace函数
正则表达式懒惰贪婪和replace函数
【转载】理解正则表达式的贪婪与非贪婪模式
如果您觉得文章对您有帮助,可以【打赏】博主或点击文章右下角【推荐】一下。您的鼓励是博主坚持原创和持续写作的最大动力!
1001 0