[lua] lua中匹配字符串小数
如何从字符串中正确匹配出小数(带符号)字符串?
使用 string.gmatch
说明见官方文档,摘录如下:
string.gmatch (s, pattern)
Returns an iterator function that, each time it is called, returns the next captures from
patternover string
s.
If
patternspecifies no captures, then the whole match is produced in each call.
As an example, the following loop
s = "hello world from Lua" for w in string.gmatch(s, "%a+") do print(w) end
will iterate over all the words from string
s, printing one per line. The next example collects all pairs
key=valuefrom the given string into a table:
t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v end
例子:
local numberT = {}
local paramStr = '[2.04523,-3.4901,12030.39458,20]'
for k in string.gmatch(paramStr, '(%-?%d+%.*%d*)') do
table.insert(numberT, tonumber(k))
end
for _, v in ipairs(numberT) do
print('type(v)='..type(v), 'v='..v)
end
--运行结果为:
type(v)=number v=2.04523
type(v)=number v=-3.4901
type(v)=number v=12030.39458
type(v)=number v=20
--上述中的模式串带小括号(),表示一个匹配结果中需要符合我们所定义的匹配方式(%-?%d+%.*%d*)
--总结:碰到lua中的特殊字符(比如 . / % - + ? 等等)需要先用%作为转义字符,
--比如上面的模式串 (%-?%d+%.*%d*) 分为 %-? %d+ %.* %d*
-- %-? %是转义了后面跟着的- 而?表示匹配0或1个,亦即匹配0或1个-
-- %d+ %d表示匹配数字 跟着+号表示匹配1或者多个数字
-- %.* %是转义了后面跟着的. 跟着的*号表示匹配0到多个.
-- %d* 表示匹配0或者多个数字
https://www.cnblogs.com/AlphaAI/p/9345657.html
转载于:https://www.cnblogs.com/AlphaAI/p/9345657.html
- 点赞
- 收藏
- 分享
- 文章举报
- lua短连接
- Lua入门(一) -- 简介与应用场景
- Lua入门(三) --Lua数据类型与基本用法
- Lua中级(一) --基本用法
- Lua知识点收集
- XLua学习心得
- Lua脚本语言入门
- Lua基础学习(一)
- Lua与c/c++调用(一)
- 基于wxlua和remebug实现的简易lua调试器
- ngx_Lua模块中的重定向
- Lua 实现数字转化为中文
- 如何编写lua扩展
- 给脚本绑定LUA解释器
- LUA语言入门
- Lua实现二进制串与Hex显示串的相互转换
- 对“tolua++导出C++子类后在Lua中无法添加新成员”这一问题的初步分析
- 那些年lua踩过的雷点
- Lua时间戳转换
- 【lua/aviutl】小型倒计时