String 带负号的数字的正确模式是什么?

String 带负号的数字的正确模式是什么?,string,lua,lua-patterns,String,Lua,Lua Patterns,我有一个由空格分隔的数字字符串,我需要将它们存储在一个表中,但由于某些原因,负号无法识别 cord = "-53 2 -21" map = {} for num in cord:gmatch("%w+") do table.insert(map, num) end map[1], map[2], map[3] = tonumber(map[1]), tonumber(map[2]), tonumber(map[3]) print(map[1]) print(map[2]) print

我有一个由空格分隔的数字字符串,我需要将它们存储在一个表中,但由于某些原因,负号无法识别

cord = "-53 2 -21"
map = {}
for num in cord:gmatch("%w+") do 
    table.insert(map, num) 
end
map[1], map[2], map[3] = tonumber(map[1]), tonumber(map[2]), tonumber(map[3])
print(map[1])
print(map[2])
print(map[3])
这是我得到的输出:

53
2
21
我认为问题在于我使用的模式,我应该更改什么?

模式%w用于字母数字字符,不包括-,请改用此模式:

"%-?%w+"
或者更好:

"%-?%d+"
因为您只需要数字。

%w+不会尝试只使用数字,所以请尝试%S+获取所有单词,即所有非零字符序列


如果只想匹配数字,请尝试%-?%d+。注意模式中的可选减号。还要注意,你必须避开负号。

你说得对,我根据你的建议改进了我的答案+1.