Итак, у меня есть список токенов, который мы можем представить как список строк для простоты:
["hello", "world", "this", "is", "some", "interesting", "input"]
Я хочу написать шаблон, который в идеале выглядит как регулярное выражениеи дает мне полную силу движка регулярных выражений, но если у меня просто есть подстановочные знаки в стиле глобуса, это тоже хорошо.
Так что, если у меня есть шаблон (с воображаемым синтаксисом, где вещи, начинающиеся с $
, являютсяименованные подстановочные знаки), например, так:
["hello", "$part1", "some", "$part2"]
Я хочу иметь возможность запустить его на входе выше, увидеть, что он совпадает, и иметь возможность получить ["world", "this", "is"]
для $part1
и ["interesting", "input"]
для$part2
.
Я мог бы закодировать мой список токенов в виде строки, скомпилировать мой список токенов шаблона в простой старый шаблон регулярного выражения и просто использовать регулярное выражение.Но мой список токенов на самом деле не содержит строк, он содержит объекты токенов, которые содержат метаданные, которые я не хочу потерять.
В настоящее время я использую собственный движок регулярных выражений, следуя статье Russ Cox. на NFA, и это определенно сработает, но это довольно сложно.
Есть ли более простой способ сделать это в Python?