, даже если у вас может возникнуть какое-то очень сложное регулярное выражение для разбора языка Behat, это типичный случай «У меня была одна проблема, я использовал регулярное выражение, теперь у меня 2 проблемы» :
Вместо того, чтобы сойти с ума, пытаясь решить эту проблему с помощью регулярных выражений, вам лучше использовать библиотеку, которая может читать и анализировать язык Behat.
Причина в том, что язык регулярных выражений отлично подходит для решения простой задачи анализа строк (работа с токенами языка).Даже если может сделать это (с расширенным регулярным выражением), синтаксический анализ сложного языка является более абстрактным.Вам нужно смотреть не только на токены (слова), но и на грамматику (синтаксис и его значение).
Типичная проблема (с которой вы сталкиваетесь) - это когда слово имеет другое значениеучитывая контекст, и грамматика там, чтобы помочь в этом.И даже несмотря на то, что вы можете выяснить первый шаг разбора сценариев, при рассмотрении каждого сценария у вас, скорее всего, возникнет похожая проблема.
Поэтому вам необходимо реализовать полномасштабный сценарий.парсер… Но написание парсера нелегко (самая сложная часть - написание грамматики).Так что, если вы Люси, кто-то другой сделал это для вас!
И вам повезло!Посмотрев на некоторую документацию по Behat , используемый язык называется gherkin.С некоторым поиском я нашел по крайней мере один пакет на python, который понимает этот язык: cucumber/gherkin-python
, который теперь перемещен в репозиторий cucumber/cucumber
.
Ниже приведен фрагмент использования парсера:
from gherkin.parser import Parser
from gherkin.pickles.compiler import compile
parser = Parser()
gherkin_document = parser.parse("Feature: ...")
pickles = compile(gherkin_document)
Затем вы получите структурированный вывод данных, через который вы сможете легко перемещаться в python.