Как правильно написать регулярное выражение для команды бота с аргументами?

Привет. Пишу бота для Telegram и потребовалась идея обрабатывать команды регуляркой, в чем я разбираюсь откровенно плохо. Задумано два типа комманд: с двумя параметрами и без
Например
/command
/command param1
/command param1 param2

command и param1 состоят из одного слова
param2 неограниченная строка
При этом param1 и param2 могут отсутсвовать в строке и в таком случае необходимо матчить только command
Написал регулярку вида
/\/([^\s]+)\s+([^\s]+)\s(.+)?/

Вроде все прекрасно, три матчинга
63403f7d28a9b974234006.png
Но стоит убрать param2 как param1 начинает парситься только с пробелом
6340405902b28629007086.png
6340405dcbb0a050476520.png

Если убрать param1 то command вообще не матчится.
634040b69feb5756838632.png
Как правильно сделать регулярку для данной задачи?
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 3
@garbagecollected
\/command(?:\s+(\S+)){0,2}
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
~/command(?:\s+(\S+)(?:\s+(.*))?)?~
Ответ написан
Комментировать
toxa82
@toxa82
Разбейте строку по пробелу в массив. Первым элементом там будет команда, остальными аргументы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы