Когда вы говорите «Regex», вы обращаетесь к нескольким методам - это не просто проблема основной теории. Рассмотрим вопрос "соответствует ли эта строка моему заданному регулярному выражению?" Для такого вопроса понятие «жадный» - это просто деталь реализации - если вы используете одну из распространенных (но неэффективных) реализаций обратного отслеживания, это может повлиять на производительность, но не на вывод. Точно так же вопрос "содержит ли эта строка совпадение?" не зависит от жадных и не жадных квантификаторов. Этот первый тип регулярных выражений связан с абстрактным понятием принадлежности к множеству: определение языка соответствующих строк.
Так почему же вообще существуют не жадные квантификаторы? Регулярные выражения не просто используются для сопоставления; общие реализации могут найти , где совпадение и какие части регулярного выражения соответствуют каким частям вывода. При этом пользователь зависит от тонкостей реализации, что не является тривиальным. Этот второй тип регулярных выражений связан с получением нескольких фрагментов текста в более практичном представлении в контексте контекста языка, полного тьюринга.
Обычно, когда вы говорите о силе формализма регулярных выражений, вы говорите о первом мире, в котором компьютер отвечает простым да или нет. Об этом легко говорить, потому что спецификация понятна. Когда вы говорите о «жадном» и «не жадном» квантификаторе, вы говорите о «втором мире», который используется на практике много, но со спецификацией, которая в основном выросла без особого планирования для решения реальных проблем и является стандартом благодаря обратной совместимости , Этот второй мир решает совершенно другие проблемы, и мне не ясно, что здесь означает «выразительная сила». Конечно, нежадный может быть практичным; и в этом вся суть ...
Нежадные квантификаторы ничего не делают для первого типа выразительности, и они делают для второго, хотя не совсем понятно, что означает здесь «выразительная сила».