regex - 'lazy' 和 'greedy' 在正则表达式中意味着什么?

标签 regex regex-greedy non-greedy

这两个术语是什么?可以理解吗?

最佳答案

贪婪会尽可能多地消耗。来自 http://www.regular-expressions.info/repeat.html我们看到尝试将 HTML 标签与 <.+> 匹配的示例。假设您有以下内容:

<em>Hello World</em>

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

让它变得懒惰(<.+?>)可以防止这种情况发生。通过添加? +之后,我们告诉它重复尽可能少的次数,所以第一个 >它遇到的是我们想要停止匹配的地方。

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

关于regex - 'lazy' 和 'greedy' 在正则表达式中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301285/

相关文章:

python - 正则表达式未在 python 中返回预期的输出

正则表达式匹配以 x 开头、以 y 结尾并包含 z 但中间不包含 x 的多行字符串

regex - 使用 Perl 提取方括号 "[]"之间的数据

c# - 如何限制文本框的表情符号范围 u2600-u26FF

javascript - 小数范围0.025到99.999的正则表达式

java - 正则表达式替换电子邮件

javascript - 如何使用正则表达式替换所有出现的字符,除非该字符包含在单词中

Python Regex - 非贪婪匹配不起作用

javascript - 如何将所有 html 标签从 <anything> 替换为\n<anything>\n [使用正则表达式 (JavaScript)]