[英]Regular expressions in Lua using .gsub()
好吧,我想我把事情復雜化了,現在迷路了。 基本上,我需要將其從Perl轉換為Lua:
my $mem;
my $memfree;
open(FILE, 'proc/meminfo');
while (<FILE>)
{
if (m/MemTotal/)
{
$mem = $_;
$mem =~ 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)
它返回
.*
但我不知道什么是正確的方法。 正則表達式使我感到困惑!
下面的代碼解析該文件的內容並將其放在表中:
meminfo={}
for Line in io.lines("/proc/meminfo") do
local k,v=Line:match("(.-): *(%d+)")
if k~=nil and v~=nil then meminfo[k]=tonumber(v) end
end
然后你可以做
print(meminfo.MemTotal)
Lua不使用正則表達式。 請參閱《在Lua中編程》第20.1節及以下部分,以了解模式匹配和替換在Lua中的工作方式以及與正則表達式的區別。
在你的情況,你要替換的完整的字符串( .*
由文本字符串) .*
-這是毫不奇怪,你剛開.*
返回。
原始正則表達式用冒號后面的部分替換了包含冒號( .*:(.*)
)的所有內容,因此Lua中的類似語句可能是
string.gsub(Mem, ".*:(.*)", "%1")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.