Regex “*+;”的所有格和贪婪量词和`*`给出不同的结果?
我在看这个问题 我可以看到Regex “*+;”的所有格和贪婪量词和`*`给出不同的结果?,regex,Regex,我在看这个问题 我可以看到*+和*如何匹配零次或多次,但所有格量词*+将尽可能向前匹配。。而*将执行*和回溯。我可以接受,当*字符串较长时,*+将更有效率 但我对他们什么时候给出不同的结果感兴趣 我看到一条评论 @moodboom,没有任何案例(数学事实)表明 所有格量词将产生一个不会产生的匹配项 通过简单贪婪的量词。偶尔也会有这样的情况 当贪婪的量词将产生匹配时,将产生不匹配。 对于所有其他情况(贪婪和占有产生相同的结果) 结果),所有格量词会提高成绩通配符 5月5日23:00 我很有兴趣看到
*+
和*
如何匹配零次或多次,但所有格量词*+
将尽可能向前匹配。。而*
将执行*
和回溯。我可以接受,当*
字符串较长时,*+
将更有效率
但我对他们什么时候给出不同的结果感兴趣
我看到一条评论
@moodboom,没有任何案例(数学事实)表明
所有格量词将产生一个不会产生的匹配项
通过简单贪婪的量词。偶尔也会有这样的情况
当贪婪的量词将产生匹配时,将产生不匹配。
对于所有其他情况(贪婪和占有产生相同的结果)
结果),所有格量词会提高成绩通配符
5月5日23:00
我很有兴趣看到这个扩展,在具体的情况下,所有格和贪婪量词给出不同的结果
对比*+
和*
我也会对可能出现的不同结果感兴趣,对比一下
?+
与?
查看演示中测试字符串的示例aaab
和aaax
尝试贪婪模式a*[^b]
和所有格模式a*+[^b]
a*[^b]
将回溯以尝试查找匹配项,因此在aaab
a*+[^b]
将发现aaa
不会回溯,将尝试匹配[^b]
,在aaab上失败我发现了一个案例,但我不确定解释和相关性。我认为还有很多其他情况
测试用例
测试日期:
笨蛋
只有贪婪的人才配得上它
解释
所有格将首先匹配整个字符串(*+
),然后尝试匹配b
字符,但只查找字符串的结尾($
)
贪婪也将匹配整个字符串,但随后向后看,直到找到第一个b
char。它会找到的。我问了一些结果不同的例子,你刚才描述了这两个例子,它们都是“aaa”,听起来像是相同的结果。我知道过程是不同的,但我要求提供不同结果的例子。你也没有讲到我写的最后一行。嗯,我本想回答这个问题,但没来得及回答。现在在手机上,但明天可能可以这样做。@Wildcard谢谢。无论何时你有时间,这都是非常相关的(有一个不同比赛的例子,以及答案中对复杂问题的许多美丽解释):@DewiMorgan我在第一行提到了这一点,这有助于理解这个问题,但是这个问题很普遍,而且答案不包括这个问题。你说你在FO和FoOB上测试过。你同意我简化你的答案吗?删除你的foo
的例子,但保留foob
的例子,原因是贪婪和所有格对foo给出相同的结果(不匹配),因此foo是不相关的。与此相关的是你的第二个例子——foob。如果没有“foo”这个例子,你的答案会更简单、更清楚,“因为foo并不是我想要的一个例子。”另一方面,foob’s.UPVOTED您对foob的发现令人惊讶,这也是一个如此简单的测试用例。我同意您的看法,事实上,当我写完这篇文章时,我想删除第一个示例。这真的是你期望的答案吗?我在写的时候不确定。我很高兴你删除了非示例,是的,你的答案回答了这个问题,到目前为止,它是这个问题的唯一答案(alpha bravo试图回答这个问题表明他甚至不理解这个问题)。虽然是的,但我确信如果合适的人来了,我会得到一个可能更深入的答案,但这是目前为止唯一的答案。
greedy = /.*b/
posssessive = /.*+b/