Lua使用string.match获取最后一次模式匹配

Lua使用string.match获取最后一次模式匹配,string,lua,pattern-matching,String,Lua,Pattern Matching,我有一个字符串,希望最后一个数字出现 (目前我的string.match只出现第一次) 在这种情况下,我希望结果是200.21(而不是像现在这样350.11)试试这个 local last for w in string.gmatch (testvar, "(%d*%.?%d+)") do last = w end print(last) 多亏了伊戈尔和所有其他人,你真是太棒了 我选择这两个作为答案 string.match (testvar:reverse(), "(%d+%.?%

我有一个字符串,希望最后一个数字出现 (目前我的string.match只出现第一次)

在这种情况下,我希望结果是
200.21
(而不是像现在这样
350.11

试试这个

local last
for w in  string.gmatch (testvar, "(%d*%.?%d+)") do
    last = w
end
print(last)

多亏了伊戈尔和所有其他人,你真是太棒了

我选择这两个作为答案

string.match (testvar:reverse(), "(%d+%.?%d*)"):reverse()
string.match (testvar, ".*%f[%d.](%d*%.?%d+)")

你认为哪一个更好?

string.match(testvar:reverse(),“(%d+%?%d*)”):reverse()
string.match(testvar,.*%f[%d.](%d*%?%d+)”
@Egor,这两个都是很好的解决方案,为什么不发布它们呢?@EgorSkriptunoff+1来自我的
reverse()
技巧。但是,应该注意的是,只有当模式恰好是对称的(如果您愿意,则为回文)时,它才会起作用。例如,给定的模式在前进时将与编号
.100
匹配,但无法与
reverse()
@tonypdmtr正确匹配-模式也被反转以正确工作。
string.match (testvar:reverse(), "(%d+%.?%d*)"):reverse()
string.match (testvar, ".*%f[%d.](%d*%.?%d+)")