【发布时间】:2010-07-15 09:13:00
【问题描述】:
我试图了解 Lua 中 string.find 和 string.match 之间的区别。对我来说,似乎两者都在字符串中找到了一个模式。但是有什么区别呢?我如何使用每个?比如说,如果我有字符串“磁盘空间:3000 kB”并且我想从中提取“3000”。
编辑:好的,我想我把事情复杂化了,现在我迷路了。基本上,我需要把它从 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)
返回
.*
但我不明白什么是正确的方法。正则表达式让我很困惑!
【问题讨论】: