实际上,我理解什么是回溯,也就是引擎应用贪婪量化词时的状态,这会导致其他原子失效,因此引擎开始倒退到以前的状态,为了匹配剩余的原子,逐渐放弃匹配。
但是当我在这个"[^"]*"上使用这个模式"abcv时,我得到了意想不到的行为,我写它是为了检查失败时会发生什么。我希望引擎能走这一步:
"匹配"匹配[^"]*,一个接一个地放弃字符,试图匹配剩余的原子。但是当我在regex101上测试这个引擎时,引擎不会回溯,但是每次它发生故障时,它都会从另一个位置重新启动。我在这里错过了什么?
这正是人们所期望的吗?如果是的话,会有人解释原因吗?
更新
我需要提到的是,".*"回溯,如果你检查引擎的步骤,你会发现它开始一个一个地给字符,但有问题的一个没有。为什么这个区别,虽然.*和[^"]*都是贪婪的量词匹配相同的文本,但一个必须后退,另一个没有。
发布于 2019-03-25 09:38:09
https://stackoverflow.com/questions/55334397
复制相似问题