2016-11-21 5 views
1

Sword2を次の文字列にマッチさせようとしています。ルア桁パターンマッチングが行われない

あなたはloot [剣] x2を受け取ります。

ここまではこれまでのところです。剣はよく一致し、アイテム変数に保存されます。ただし、qtyは入力文字列に関係なく常に[No qty]を返します。

local item, qty = msg:match('%[(.+)%]x?(%d?)') or 'No item', 'No qty' 

答えて

2

問題は、あなたのパターンではない、それはor作品と一緒に複数の割り当て方法です。あなたが持っていることは(太字括弧に注意してください)実際にある:

local item, qty =(msg:match('%[(.+)%]x?(%d?)') or 'No item'), 'No qty'

ので、qty常に'No qty'が割り当てられます。私はこの問題を1つのステートメントで解決することはできないと考えています。あなたはこのような何かをする必要があります:

local item, qty = msg:match('%[(.+)%]x?(%d?)') 
item = item or 'No item' 
qty = qty or 'No qty' 

または

local item, qty = msg:match('%[(.+)%]x?(%d?)') 
item, qty = item or 'No item', qty or 'No qty' 

パターンに関しては、あなたが %[(.+)%]x?(%d*)を使用する場合があります、つまり10以上の量のため *の代わり ?

関連する問題