Fångster och string.match
Extrahera fångade grupper ur strängar med string.match och ()-fångster.
Fångster och string.match är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad är fångster?
Fångster är parentesomslutna delmönster i Lua-mönster. De extraherar delsträngar från den matchade texten.
string.match med fångster
När ett mönster innehåller fångster returnerar string.match de fångade delsträngarna i stället för hela matchningen.
local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d) -- 2025 01 15Enkel fångst
En enkel fångst returnerar ett strängvärde.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- AliceFlera fångster
Flera fångster returneras som flera värden.
local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v) -- key valuePositionsfångster ()
En tom fångst () fångar den aktuella strängpositionen som ett tal.
local s = "hello world"
local pos = s:match("()world")
print(pos) -- 7 (position where world starts)Valfria fångster
Fånga en valfri del genom att använda ? efter den fångade gruppen.
local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host) -- http example.comstring.find med fångster
string.find med fångster returnerar start, slut och därefter de fångade delsträngarna.
local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num) -- 1 16 555-1234Nästlade fångster
Fångster kan nästlas. De numreras från vänster till höger efter den öppnande parentesen.
local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year) -- 2025-01-15 2025Bästa praxis för fångster
Använd variabler enligt namngivningskonventionen för tydlighetens skull. Nästla inte fångster mer än nödvändigt. Misslyckade matchningar returnerar nil — kontrollera alltid resultatet innan fångster används.
local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") endMatcha e-postadresser
Ett enkelt (inte RFC-kompatibelt) e-postmönster med fångster.
local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain) -- user example.comTabell med alla matchningar
Använd string.gmatch för att samla alla matchningar i en tabell (tas upp i nästa lektion).
Fråga om fångster
Vad returnerar "2025-01-15":match("(%d+)-(%d+)-(%d+)")?
Sammanfattning: fångster och string.match
Fångster använder () i mönster för att extrahera delsträngar. string.match returnerar fångade värden direkt. Tomma () fångar positioner. Kontrollera alltid matchningsresultat mot nil.
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”Fångster och string.match” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”Fångster och string.match”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Fångster och string.match”?
Extrahera fångade grupper ur strängar med string.match och ()-fångster. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Fångster och string.match”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Syntax för Lua-mönster
- Fångster och string.match
- string.gmatch för tokenisering
- string.gsub för omvandlingar