2016-04-12 10 views
2

Ich versuche zu verstehen, wie eine Zeichenfolge in lua mit diesem FormatSplitting ein String mit einem Doppel Begrenzer

hello - mynameis - jeff 

ich einfach teilen möge die Namen „jeff“ erhalten. Das Trennzeichen wird - und sein. Dies ist, was ich wirklich versucht:

local result = string.gmatch(line, "[-\s]+") 

Welche funktioniert nicht. Wie würde ich es tun?

+0

"* Das Trennzeichen wird ein' -' und ein. * "Wäre nicht das Trennzeichen" - "? Das heißt, ein Strich von Räumen umgeben? –

+0

Überprüfen Sie meine https://github.com/moteus/lua-split-Bibliothek. 'Ergebnis = Split (Linie, '-', Wahr)' oder 'Ergebnis = Split (Linie, '% s *% -% s *')'. – moteus

Antwort

0

Eine der Problemumgehungen kann alle "-" durch ein Zeichen ersetzen, das nicht im Inhalt verwendet wird, und dann den letzten Teil mit einer einfachen negierten Zeichenklasse mit einem $ End-of-String-Anker erhalten:

local example = "hello - mynameis - jeff" 
example = string.gsub(example, " %- ", "\x02") 
local result = string.match(example, "[^\x02]+$") 
print(result) 

Siehe Lua IDEONE demo

mit " %- " all space + - + space Strings mit dem temporären Charakter ersetzen werden, und dann nur der Teil nachdem das letzte temporäre Zeichen mit [^\x02]+$ Muster übereinstimmt.

Ich habe das STX Steuerzeichen (\x02), aber Sie können eine andere, die Sie sicher sind, fehlt in den Inhalt zu analysieren.