如何匹配带小数点的数字

我想在一个字符串中设置两个不同的变量为两个不同的数字。

我使用了一个类似于"100,125"的字符串,并且成功匹配了其中的两个数字,但是当我将字符串中的数字改为带小数点的(类似于"100.172,125.181")时,它只返回小数点后面的数字。

local x, y = string.match("100,125", "(%d+),(%d+)")
--这段代码能正常运行,使变量x=100,变量y=125

但是

local x, y = string.match("100.134,125.122", "(%d+),(%d+)")
--这段代码并没有正确运行

使用后者的方法,我最终得到的变量x和y的值都是小数点后面的数字。我想应该将字符串重新格式化为"100.1x125.5"这样的形式,但我不是很确定。谢谢,不好意思问这样初级的问题。

点赞
用户277176
用户277176

%d只匹配介于0和9之间的数字。你想要匹配小数点,所以你应该用 [%d.] 来匹配任何数字或句点。

因此,将模式更改为以下内容:

local x, y = string.match("100.134,125.122", "([%d.]+),([%d.]+)")
print(x)
print(y)

这将正确地打印出:

100.134
125.122
2019-04-22 02:18:38
用户7552
用户7552

你可能想要安装 split

> split = require("split")
> s = "100.134,125.122"
> x,y = table.unpack(split.split(s, ","))
> x
100.134
> y
125.122
2019-04-22 11:57:42