Как движок регулярных выражений работает с литералами после повторения (то есть ".*")?

Я не понимаю, как движок регулярных выражений работает с литералами после повторения. Я читал это. http://www.regular-expressions.info/print.html

Так что речь идет о сопоставлении строки в двойных кавычках.

Предположим, вы хотите сопоставить строку в двойных кавычках. Звучит просто. Между двойными кавычками может быть любое число любого символа, поэтому "".*"", Кажется, отлично справляется с задачей. Точка соответствует любому символу, а звезда позволяет точке повторяться любое количество раз, включая ноль.

Теперь, как регулярное выражение знает, когда остановиться? Не дойдет ли до конца файла? Мой анализ: я подумал о 2 возможных путях, как это работает.

СПОСОБ 1: регулярное выражение найдет цитату, затем оно будет сопоставлять любой символ до конца файла (или строки) . Затем оно "поймет", что нет цитаты, поэтому оно вернется к предыдущей перестановке .*(остановка на последнем символе) и продолжайте движение назад, пока не будет найдена двойная кавычка. .* звучит как плохая идея, если этот метод верен.

ИЛИ Способ 2: регулярное выражение будет соответствовать двойной кавычке, затем оно будет соответствовать любому символу, пока не достигнет двойной кавычки. Я думаю, что это маловероятно, поскольку книга подразумевает иное.

Конечно, я могу проверить методы, чтобы увидеть, какой из них является реальным, но там может быть совершенно другой метод.

примечание... Меня, конечно, волнует понимание того, как движок регулярных выражений работает с X или Y, потому что это делает вас лучше при его использовании (точно так же, как понимание того, как работают замыкания), и потому что я не чувствую себя хорошо в использовании Я не понимаю (типичный разработчик) .

0 ответов

Другие вопросы по тегам