2017-01-13 5 views
0

Я создаю чат-чат для Steam, и пользователи смогут ввести команду, такую ​​как !tell jimmy message. Я хочу, чтобы это действовало точно так же, как если бы оно выполнялось с командной строкой с аргументами. Таким образом, текст между кавычками считается одним единственным аргументом, а пробелы между текстом являются аргументами сперва.Regex Parse Text как аргументы

Вот некоторые примеры:

  • !tell jimmy message =Имя: отмычка, тзд: сообщение

  • !tell jimmy "message" =Имя: отмычка, тзд: сообщение

  • !tell jimmy "Hello Jimmy!" =имя: jimmy, msg: Здравствуйте, Джимми!

  • !tell "jimmy" hey =Имя: отмычки, тзда: эй

возможно с регулярными выражениями и захватом групп Является ли это, и если да, то как?

+0

«(. *?)» | (\ W +), похоже, делает что-то похожее на то, что я ищу, но группы захвата не являются последовательными. – Acidic

ответ

0

шаблон !tell ("[^"]*"|[^ ]+) ("[^"]*"|[^=]+) = где вы первый матч !tell то вы либо соответствовать строке внутри между двумя цитатами "[^"]*" или до места [^ ]+. То же самое относится к сообщению.

+1

Кажется, это работает очень хорошо! Я попытаюсь использовать его и посмотреть, как я иду – Acidic