码迷,mamicode.com
首页 > 其他好文 > 详细

[lua] lua中匹配字符串小数

时间:2018-07-21 11:53:32      阅读:1071      评论:0      收藏:0      [点我收藏+]

标签:3.4   mat   who   ram   tar   表示   UNC   target   time   

如何从字符串中正确匹配出小数(带符号)字符串?

使用 string.gmatch

说明见官方文档,摘录如下:

string.gmatch (s, pattern)

Returns an iterator function that, each time it is called, returns the next captures from pattern over string s.

If pattern specifies 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=value from 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 

[lua] lua中匹配字符串小数

标签:3.4   mat   who   ram   tar   表示   UNC   target   time   

原文地址:https://www.cnblogs.com/AlphaAI/p/9345657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!