You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Lua字符串中提取整数与浮点数?

Lua提取字符串中的整数与浮点数

要从给定字符串中提取所有整数和浮点数,你需要使用能同时匹配整数和带小数点浮点数的正则表达式,以下是具体实现:

问题分析

你之前尝试的几种正则都存在局限性:

  • %d+:只能匹配连续数字,会把浮点数拆分成整数部分和小数部分(比如399.4989929会被拆成399和4989929)
  • %d*:会匹配空字符串,返回大量无效结果
  • ^%d:仅匹配字符串开头的第一个数字字符,无法提取后续所有数字

正确实现

使用正则表达式 %d+%.?%d* 可以匹配整数(如564186207)和浮点数(如399.4989929),结合string.gfind(Lua 5.1)或string.gmatch(Lua 5.2+)迭代器即可提取所有目标数字:

代码示例

S = "564186207, 399.4989929 , ABC, degds, 2425, 335.232"
-- Lua 5.1 使用 string.gfind
for num in string.gfind(S, "%d+%.?%d*") do
    io.write(num, ", ")
end
-- 输出:564186207, 399.4989929, 2425, 335.232, 

-- Lua 5.2+ 建议使用 string.gmatch(gfind 已被废弃)
for num in string.gmatch(S, "%d+%.?%d*") do
    io.write(num, ", ")
end

正则表达式说明

  • %d+:匹配1个或多个数字(整数的主体部分)
  • %.?:匹配0个或1个小数点(%.是转义后的小数点,?表示该部分可选)
  • %d*:匹配0个或多个数字(浮点数的小数部分,可选)

如果需要支持负数(如-123.45),可以将正则修改为 %-?%d+%.?%d*,其中%-?表示可选的负号。

内容的提问来源于stack exchange,提问作者우상화

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:12:39