Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex “*+;”的所有格和贪婪量词和`*`给出不同的结果?_Regex - Fatal编程技术网

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/