Lua Academy · Lektion

Fångster och string.match

Extrahera fångade grupper ur strängar med string.match och ()-fångster.

Lektion 2 av 413 steg

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  15

Enkel fångst

En enkel fångst returnerar ett strängvärde.

local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name)  -- Alice

Flera 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  value

Positionsfå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.com

string.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-1234

Nä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  2025

Bä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") end

Matcha 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.com

Tabell 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.

Gratis att börja

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

  1. Syntax för Lua-mönster
  2. Fångster och string.match
  3. string.gmatch för tokenisering
  4. string.gsub för omvandlingar
← Tillbaka till Lua Academy