【问题标题】:Lua digit pattern matching not capturingLua数字模式匹配未捕获
【发布时间】:2016-11-21 02:03:14
【问题描述】:

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

你会收到战利品 [剑]x2。

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

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

【问题讨论】:

    标签: lua lua-patterns multiple-assignment


    【解决方案1】:

    问题不在于你的模式,而是多重赋值与or 一起工作的方式。您实际上拥有的是(注意粗体括号):

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

    因此,qty始终分配给 'No qty'。我不认为这个问题可以在一个单一的声明中解决。你必须这样做:

    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'
    

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

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2014-11-10
      相关资源
      最近更新 更多