Captures und string.match
Extrahieren Sie erfasste Gruppen aus Zeichenketten mit string.match und ()-Captures
Captures und string.match ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Captures?
Captures sind in Lua-Mustern durch Klammern gekennzeichnete Teilmuster. Sie extrahieren Teilzeichenketten aus dem gefundenen Text.
string.match mit Captures
Enthält ein Muster Captures, gibt string.match die erfassten Teilzeichenketten statt des gesamten Treffers zurück.
local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d) -- 2025 01 15Einzelnes Capture
Ein einzelnes Capture gibt einen String-Wert zurück.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- AliceMehrere Captures
Mehrere Captures werden als mehrere Werte zurückgegeben.
local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v) -- key valuePositions-Captures ()
Ein leeres Capture () erfasst die aktuelle Position in der Zeichenkette als Zahl.
local s = "hello world"
local pos = s:match("()world")
print(pos) -- 7 (position where world starts)Optionale Captures
Erfassen Sie einen optionalen Teil, indem Sie ? hinter der erfassten Gruppe verwenden.
local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host) -- http example.comstring.find mit Captures
string.find mit Captures gibt zuerst Start und Ende und anschließend die erfassten Teilzeichenketten zurück.
local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num) -- 1 16 555-1234Verschachtelte Captures
Captures können verschachtelt werden. Sie werden anhand der öffnenden Klammer von links nach rechts nummeriert.
local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year) -- 2025-01-15 2025Bewährte Vorgehensweisen für Captures
Verwenden Sie Variablen nach einer einheitlichen Namenskonvention, um die Übersichtlichkeit zu verbessern. Verschachteln Sie Captures nicht unnötig. Bei einem fehlgeschlagenen Treffer wird nil zurückgegeben – prüfen Sie dies immer, bevor Sie Captures verwenden.
local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") endE-Mail-Adressen finden
Ein einfaches, nicht RFC-konformes E-Mail-Muster mit Captures.
local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain) -- user example.comTabelle mit allen Treffern
Um alle Treffer in einer Tabelle zu sammeln, verwenden Sie string.gmatch (wird in der nächsten Lektion behandelt).
Frage zu Captures
Was gibt "2025-01-15":match("(%d+)-(%d+)-(%d+)") zurück?
Zusammenfassung: Captures und string.match
Captures verwenden () in Mustern, um Teilzeichenketten zu extrahieren. string.match gibt erfasste Werte direkt zurück. Ein leeres () erfasst Positionen. Prüfen Sie Trefferergebnisse immer auf nil.
Häufig gestellte Fragen
Ist die Lektion „Captures und string.match“ kostenlos?
Ja — der vollständige Text von „Captures und string.match“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Captures und string.match“?
Extrahieren Sie erfasste Gruppen aus Zeichenketten mit string.match und ()-Captures Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Captures und string.match“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Syntax von Lua-Mustern
- Captures und string.match
- string.gmatch zur Tokenisierung
- string.gsub für Transformationen