Regex 正则表达式引擎的规则。正则表达式的贪婪、渴望和懒惰
众所周知,regex引擎在工作时使用两条规则:Regex 正则表达式引擎的规则。正则表达式的贪婪、渴望和懒惰,regex,regex-greedy,Regex,Regex Greedy,众所周知,regex引擎在工作时使用两条规则: 规则1:最早开始的比赛获胜或使用正则表达式 你很渴望 规则2:正则表达式是贪婪的 这些行出现在教程中: 这两条规则是相辅相成的 它渴望给你一个结果,所以它所做的就是试图 继续让第一个做所有的工作 当我们已经在它的中间,让我们继续前进,到达 字符串的结尾,然后当它不起作用时,它就会起作用 回溯并尝试另一个 它不会回到开始;它不会尝试所有的方法 其他组合的 它仍然渴望给你一个结果,所以它说,如果我只是给你一个结果呢 退一步 这能让我把结果还给你吗
- 规则1:最早开始的比赛获胜或使用正则表达式 你很渴望
- 规则2:正则表达式是贪婪的
- 很明显
谢谢。让我们试一下这个例子 对于
的输入,这是针对regex上的测试输入的输入,类似于/this.*input/
匹配将是这是测试输入的输入
将要做的是
- 开始检查字符串,它将获得与
这是输入的匹配项
现在它在字符串的中间,它会继续看它是否能在它上面匹配(这是<代码>,我们已经在中间了,让我们继续下去< <代码> >
- 它将匹配到
这是测试输入的输入
,并持续到字符串末尾
- 最后,有些东西不是比赛的一部分,所以解释器“回溯”到最后一次比赛
在最后一部分,我们将介绍更多关于OR正则表达式的内容
将输入字符串视为cdacdgabcdef
和正则表达式(ab | a)。*
一个常见的错误是认为它将返回更精确的一个(在本例中为“abcdef”),但它将返回“acdgabcdef”,因为A
匹配是第一个匹配的
这里发生的事情是:有一些东西与这一部分相匹配,让我们继续到模式的下一部分,忘掉这一部分中的其他选项
对于懒惰和贪婪的问题,@AvinashRaj的链接非常清楚,我在这里不再重复。这里的“快”和“慢”指的是性能、找到匹配的速度或失败的速度。从你发布的你正在阅读的教程的引语来看,你看起来不太好。我建议你看看更好的。