2017-01-13 30 views
0

我正在爲Steam創建一個聊天機器人,用戶將能夠鍵入一個命令,如!tell jimmy message。我希望它的行爲完全像使用帶參數的命令行一樣運行。因此,引號之間的文本算作一個單獨的參數,並且文本之間的空格是sperate參數。正則表達式解析文本作爲參數

下面是一些例子:

  • !tell jimmy message =名:麥,MSG:消息

  • !tell jimmy "message" =名:麥,MSG:消息

  • !tell jimmy "Hello Jimmy!" =name: jimmy,msg:你好吉米!

  • !tell "jimmy" hey =名稱:吉米,消息:

這可能與正則表達式和捕獲組,如果是的話,怎麼樣?

+0

「(。*?)」|(\ w +)似乎做了類似於我所尋找的事情,但捕獲組不是一致的。 – Acidic

回答

0

模式!tell ("[^"]*"|[^ ]+) ("[^"]*"|[^=]+) =你第一次匹配!tell然後你匹配兩個引號之間的字符串"[^"]*"或直到空間[^ ]+。該消息同樣適用。

+1

這似乎工作得很好!我會嘗試並使用它,看看我如何去 – Acidic