Lua   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Lua中string.find和string.match有什么区别?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解Lua中String.find和String.match之间的区别.对我而言,似乎都在字符串中找到了一个模式.但有什么区别?我该如何使用?比方说,如果我有字符串“Disk Space:3000 kB”,我想从中提取’3000′.

编辑:好的,我觉得我过于复杂,现在我迷路了.基本上,我需要翻译这个,从Perl到Lua:

@H_570_4@my $mem; my $memfree; open(FILE,'proc/meminfo'); while (<FILE>) { if (m/Mem@R_427_10586@l/) { $mem = $_; $mem =~ s/.*:(.*)/$1/; } elseif (m/MemFree/) { $memfree = $_; $memfree =~ s/.*:(.*)/$1/; } } close(FILE);

到目前为止我写的这个:

for Line in io.lines("/proc/meminfo") do
    if Line:find("Mem@R_427_10586@l") then
        Mem = Line
        Mem = String.gsub(Mem,".*",1)
    end
end

但这显然是错误的.我得不到什么?我理解为什么它是错的,@R_772_10021@在做什么以及为什么我这样做

print(Mem)

它返回

.*

但我不明白什么是正确的方法.正则表达式让我困惑!

解决方法

在您的情况下,您需要String.match:
local space = tonumber(("Disk Space 3000 kB"):match("Disk Space ([%.,%d]+) kB"))

String.find略有不同,因为在返回任何捕获之前,它返回找到的子字符串的开始和结束索引.当没有捕获时,String.match将返回匹配的整个字符串,而String.find将不会返回超过第二个返回值的任何内容. String.find还允许您使用’plain’参数搜索字符串,而不会知道Lua模式.

当你想要匹配的捕获时使用String.match,当你想要子串的位置时,或者当你想要位置和捕获时,使用String.find.

大佬总结

以上是大佬教程为你收集整理的Lua中string.find和string.match有什么区别?全部内容,希望文章能够帮你解决Lua中string.find和string.match有什么区别?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。