Lua string.match()问题

lua*_*uac 2 string lua match

我想为一个字符串和几个数字匹配几行.线条看起来像

"  Code                                             : 75.570 "
Run Code Online (Sandbox Code Playgroud)

要么

"  ..dll                                   :          13.559       1"
Run Code Online (Sandbox Code Playgroud)

要么

"  ..node                                    :  4.435    1.833    5461"
Run Code Online (Sandbox Code Playgroud)

要么

"  ..NavRegions                                     :  0.000         "
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

local name, numberLeft, numberCenter, numberRight = line:match("regex");
Run Code Online (Sandbox Code Playgroud)

但我对字符串匹配很新.

jpj*_*obs 5

这种模式适用于所有情况:

%s*([%w%.]+)%s*:%s*([%d%.]+)%s*([%d%.]*)%s*([%d%.]*)

简短说明:[]制作一组字符(例如小数).数字的最后一个使用,[set]*所以空匹配也是有效的.这样,将有效地分配未找到的数字nil.

注意使用+ - *模式之间的区别.更多关于Lua参考中的模式.

这将匹配点和小数的任何组合,因此尝试将其转换为tonumber()后续数字可能很有用.

一些测试代码:

s={
"  Code                                             : 75.570 ",
"  ..dll                                   :          13.559       1",
"  ..node                                    :  4.435    1.833    5461",
"  ..NavRegions                                     :  0.000         "
}
for k,v in pairs(s) do
    print(v:match('%s*([%w%.]+)%s*:%s*([%d%.]+)%s*([%d%.]*)%s*([%d%.]*)'))
end
Run Code Online (Sandbox Code Playgroud)