Lua数字模式匹配未捕获

Lua数字模式匹配未捕获,lua,lua-patterns,multiple-assignment,Lua,Lua Patterns,Multiple Assignment,我正在尝试匹配以下字符串中的swarm和2 你获得战利品[剑]x2 这就是我到目前为止所取得的成就。剑匹配良好,保存在项目变量中。但是,无论输入字符串如何,qty始终返回“No qty” local item, qty = msg:match('%[(.+)%]x?(%d?)') or 'No item', 'No qty' 问题不在于你的模式,而在于多重分配与或一起工作的方式。您实际拥有的是(请注意粗体排列): 本地项目,数量=(消息:匹配('%[(.+)%]x?(%d?))或“无项目”),

我正在尝试匹配以下字符串中的
swarm
2

你获得战利品[剑]x2

这就是我到目前为止所取得的成就。剑匹配良好,保存在项目变量中。但是,无论输入字符串如何,qty始终返回“No qty”

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

问题不在于你的模式,而在于多重分配与
一起工作的方式。您实际拥有的是(请注意粗体排列):

本地项目,数量=
消息:匹配('%[(.+)%]x?(%d?))或“无项目”
,“无数量”

因此,
数量
将始终分配
无数量
。我认为这个问题不可能一句话就解决。您必须执行以下操作:

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

关于模式,您可能希望使用
%[(.+)%]x?(%d*)
,即
*
而不是
来表示10个或更多的数量

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