Pattern match string in Lua
Habe ich den folgenden Text, der aufgeteilt wird in eine Tabelle mit Lua:
(die Daten werden zueinander ausgerichtet. Ich habe nicht herausfinden, wie zu schreiben, formatieren Sie es wie auf dieser Website)
IP: 192.168.128.12
MAC: AF:3G:9F:c9:32:2E
Expires: Fri Aug 13 20:04:53 2010
Time Left: 11040 Sekunden
sollte das Ergebnis in einer Tabelle wie dieser:
t = {"IP" : "192.168.128.12", "MAC" : "AF:3G:9F:c9:32:2E", "Expires" : "Fri Aug 13 20:04:53 2010", "Zeit" : "11040 Sekunden"}
Habe ich versucht mit:
for k,v in string.gmatch(data, "([%w]+):([%w%p%s]+\n") do
t[k] = v
end
Das war mein bestes versuchen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich verstanden Ihrem Anwendungsfall die folgenden sollten den trick tun. Eventuell braucht es ein bisschen zwicken, aber.
Vorausgesetzt "Daten aufeinander ausgerichtet" bedeutet so etwas wie die folgenden:
Den
<pre>
tag kann verwendet werden, um die Ausrichtung beizubehalten.Minimieren von änderungen an Ihren vorhandenen code:
(%w[%w ]*)
zu vermeiden, dass führende Leerzeichen und den Raum inTime Left
%s*
nach:
zu vermeiden, dass führende Leerzeichen in erfassten Werte%s
Raum in der Sekunde erfassen, um zu vermeiden, erfassen\n
gmath
zugmatch
und Hinzugefügt)
für die AufnahmeMuster sollte für Sie arbeiten, vorausgesetzt, dass:
Hinweis: Die MAC Adresse in Ihrer Frage hat ein 'G', die nicht für eine hexadezimale Ziffer.
Edit: Nach zu denken, über Ihre Frage im detail, habe ich erweiterte meine Antwort um zu zeigen, wie können mehrere Instanzen erfasst werden, in eine Tabelle ein.