Menu
Coddy logo textTech

string.match()

Teil des Abschnitts Logic & Flow 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: 100

Das 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: Alice

Hier sagen die Klammern um %a+ Lua, dass die Buchstabenfolge erfasst werden soll, 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.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion extractPrice, die text entgegennimmt und den im String gefundenen Preiswert zurückgibt.

Verwende string.match() mit einem Capture-Pattern, um den numerischen Preis zu extrahieren, der nach dem Dollarzeichen erscheint. Das Pattern sollte eine oder mehrere Ziffern mit %d+ erfassen.

Parameter:

  • text (string): Ein String, der einen Preis im Format "Price: $XX" enthält

Rückgabewert: Der numerische Preis als String (string)

Spickzettel

Verwenden Sie string.match(), um Text zu extrahieren, der einem Muster entspricht:

local text = "Player score: 100"
local number = string.match(text, "%d+")
print(number)  -- Ausgabe: 100

Der Modifikator + findet eine oder mehrere Entsprechungen der vorangehenden Zeichenklasse:

%d+  -- eine oder mehrere Ziffern
%a+  -- ein oder mehrere Buchstaben

Verwenden Sie Klammern (), um Captures zu erstellen, die bestimmte Teile eines Musters extrahieren:

local message = "User: Alice sent a message"
local username = string.match(message, "User: (%a+)")
print(username)  -- Ausgabe: Alice

Mehrere Captures geben separate Werte zurück:

local var1, var2 = string.match(text, "(pattern1)(pattern2)")

Probier es selbst

function extractPrice(text)
    -- Code hier schreiben
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow