Есть ли способ сократить это выражение регулярного выражения, чтобы оно больше походило на регулярное выражение? - PullRequest
2 голосов
/ 25 октября 2019

Мне нужно проанализировать команду, взятую из терминала, как строку, чтобы она стала доступной для чтения моими базовыми функциями. Функция синтаксического анализа должна возвращать кортеж, содержащий команду, которая является первым словом, и параметры в виде списка всех других слов, без пробелов, неразборчивых символов и т. Д.

Пример этогоповедение будет следующим: Input: "заменить все значения на 15" Переменная full_command: ["replace", "all", "values", "with", "15"]

Я попытался удалить все пробелы вспереди, сзади и затем разбивая строку на список строк с помощью функции re.split ()

Вот так выглядит мерзость

full_command = re.split("\W+", re.sub("\s+$", '', re.sub("^\s+", '', cmd)))

Но на самом деле это не выглядиткак должно выглядеть регулярное выражение, это просто плохая попытка эмулировать обычные строковые команды

Ожидаемый результат в full_command должен быть списком всех слов из строки cmd, и он работает, он просто неЯ не выгляжу так, как мне кажется, и это действительно неправильно.

1 Ответ

1 голос
/ 25 октября 2019

Попробуйте этот код.

full_command = re.split(r"^\W+|\W+|\W+$", cmd)[1:-1]

Редактировать

full_command = re.findall(r"\w+", cmd)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...