На самом деле я понимаю, что такое возвратный путь, то есть состояние, когда двигатель применяет жадный квантификатор, что приводит к отказу другого атома, поэтому двигатель начинает возвращаться к предыдущему состоянию, чтобы постепенно отказаться от совпадений в целях сопоставления оставшихся атомов.
но я получил неожиданное поведение, когда использовал этот шаблон "[^"]*"
на этом "abcv
, который я написал, чтобы проверить, что происходит при сбое.и я ожидал, что двигатель сделает следующие шаги:
- двигатель соответствует
"
- , тогда жадно выраженный отрицательный набор символов будет соответствовать abcv
- , двигатель отказываетчтобы соответствовать последнему
"
- , поэтому он должен вернуться к
[^"]*
, чтобы бросать символы один за другим, пытаясь соответствовать оставшемуся атому.
, но когда я проверяю этона regex101 двигатель не возвращается назад, но каждый раз запускается из другого положения.так чего мне здесь не хватает?
Это именно то, что ожидалось?если да, объяснит ли кто-нибудь почему?
Обновление
Мне нужно упомянуть, что ".*"
возвращается назад, и если вы проверите шаги двигателя, вы обнаружите, что он запускаетсядавать персонажей одного за другим, а тот, у кого проблемы, нет.почему эта разница, в то время как .*
и [^"]*
являются жадными квантификаторами, которые соответствуют одному и тому же тексту, но один должен был отслеживать, а другой нет.