您的位置:首页 > 编程语言 > Lua

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

2020-02-17 00:43 357 查看

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

使用 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 

转载于:https://www.cnblogs.com/AlphaAI/p/9345657.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
dikao8849 发布了0 篇原创文章 · 获赞 0 · 访问量 45 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: