string.match()
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 38 von 54.
Während string.find() Ihnen mitteilt, wo ein Muster in einer Zeichenfolge erscheint, müssen Sie manchmal den tatsächlichen Text extrahieren, der übereinstimmte. Hier kommt string.match() ins Spiel, und es wird noch leistungsfähiger, wenn es mit Captures kombiniert wird.
Captures ermöglichen es Ihnen, bestimmte Teile eines Musters zu markieren, die Sie extrahieren möchten. Sie erstellen ein Capture, indem Sie einen Teil Ihres Musters in Klammern () einschließen. Wenn string.match() eine Übereinstimmung findet, gibt es den erfassten Text anstelle von nur der Position zurück.
Hier ist ein einfaches Beispiel, um eine Zahl aus einem String zu extrahieren:
local text = "Player score: 100"
local number = string.match(text, "%d+")
print(number) -- Ausgabe: 100Das Muster %d+ bedeutet „eine oder mehrere Ziffern“. Das + ist ein Modifikator, der auf eines oder mehrere der vorangehenden Zeichenklassen passt und es Ihnen ermöglicht, mehrstellige Zahlen zu erfassen.
Sie können Captures verwenden, um bestimmte Teile eines komplexeren Musters zu extrahieren:
local message = "User: Alice sent a message"
local username = string.match(message, "User: (%a+)")
print(username) -- Ausgabe: AliceHier weisen die Klammern um %a+ Lua an, die Buchstabenfolge zu erfassen, die nach „User: “ kommt. Der Rest des Musters hilft dabei, die richtige Position zu finden, aber nur der erfasste Teil wird zurückgegeben.
Wenn Ihr Muster mehrere Treffergruppen enthält, gibt string.match() alle als separate Werte zurück, die Sie mehreren Variablen gleichzeitig zuweisen können.
Aufgabe
EinfachSchreibe eine Funktion extractPrice, die text entgegennimmt und den in der Zeichenkette gefundenen Preiswert zurückgibt.
Verwende string.match() mit einem Capture-Muster, um den numerischen Preis zu extrahieren, der nach dem Dollarzeichen erscheint. Das Muster sollte mithilfe von %d+ eine oder mehrere Ziffern erfassen.
Parameter:
text(string): Eine Zeichenkette, die einen Preis im Format „Price: $XX“ enthält
Rückgabe: Der numerische Preis als Zeichenkette (string)
Probier es selbst
function extractPrice(text)
-- Code hier schreiben
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Rückblick – Read-Only-Tabelle7Fortgeschrittene String-Manipulation
string.gsub() zur ErsetzungEinführung in String-Musterstring.find()string.match()Iteration mit string.gmatch()Zusammenfassung – Parser für Logdateien2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-TabelleÜbe selbstständig: Online-Lua-Compiler