我将尝试帮助你理解Lua中的string.find和string.match的区别,它们都用于在字符串中查找模式。但是它们之间的区别是什么?我该如何使用它们?例如,如果我有一个字符串“Disk Space: 3000 kB”,我想从中提取出“3000”。
编辑:好的,我想我过于复杂化了问题,现在有点迷失了。基本上,我需要将这段Perl代码翻译成Lua:
编辑:好的,我想我过于复杂化了问题,现在有点迷失了。基本上,我需要将这段Perl代码翻译成Lua:
my $mem;
my $memfree;
open(FILE, 'proc/meminfo');
while (<FILE>)
{
if (m/MemTotal/)
{
$mem = $_;
$mem =~ s/.*:(.*)/$1/;
}
elseif (m/MemFree/)
{
$memfree = $_;
$memfree =~ s/.*:(.*)/$1/;
}
}
close(FILE);
到目前为止,我已经写了这个:
for Line in io.lines("/proc/meminfo") do
if Line:find("MemTotal") then
Mem = Line
Mem = string.gsub(Mem, ".*", ".*", 1)
end
end
但这显然是错误的。我哪里没理解?我知道它为什么是错的,以及当我执行时它实际上在做什么和为什么
print(Mem)
它返回
.*
但是我不知道正确的方法是什么。正则表达式让我感到困惑!
string.find(主串, 模式串, 可选起始位置, 可选普通模式标记)
据我理解,可选起始位置是我们希望搜索开始的位置,而不是返回我们正在寻找的模式的位置的输出变量。还是说它是?否则,我只是没有注意到我的教科书示例中有一个位置被返回,并且我很抱歉。 - OddCore