Я скажу, что ответ на ваш вопрос «нет, вы не можете реализовать алгоритм маневрового двора с помощью регулярного выражения».Это по той же причине, по которой вы не можете анализировать произвольный HTML с помощью регулярных выражений.Что сводится к следующему:
Регулярные выражения не имеют стека.Поскольку алгоритм шунтирующего двора опирается на стек (для извлечения и извлечения операндов при преобразовании из инфикса в RPN), то регулярные выражения не обладают вычислительной «мощью» для выполнения этой задачи.
Это затушевывает многиедетали, но «регулярное выражение» является одним из способов определения регулярного языка.Когда вы «используете» регулярное выражение, вы просите компьютер сказать: «Посмотрите на текст и скажите, есть ли какая-либо из этих строк на моем языке. Язык, который я определил с помощью регулярного выражения».Я укажу на этот самый превосходный ответ, который вы и все, кто читает это, должны набрать для получения дополнительной информации по обычным языкам.
Так что теперь вам нужна некоторая математическая концепция для расширения "обычных языков",создавать более мощные языки.Если бы вы охарактеризовали алгоритм маневрового двора как реализацию модели вычислительной мощности, то вы могли бы сказать, что алгоритм будет описан как контекстно-свободная грамматика (эй, что вы знаете, эта ссылкав качестве примера использует дерево разбора выражений.) автомат с нажатием вниз .Что-то со стеком.
Если вы плохо знакомы с теорией автоматов и классами сложности, то эти статьи в Википедии, вероятно, не так уж полезны, если не объяснить их с нуля.
В сущности, вы можете использовать регулярные выражения для написания маневрового двора.Но регулярные выражения не очень хороши в выполнении операций, которые имеют произвольную глубину, которая есть у этой проблемы.Так что я бы не стал тратить слишком много времени на поиски решения этой проблемы.