Captures og string.match
Hent ut fangede grupper fra strenger med string.match og ()-captures.
Captures og string.match er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva er captures?
Captures er parentesinnesluttede delmønstre i Lua-mønstre. De trekker ut delstrenger fra den matchede teksten.
string.match med captures
Når et mønster inneholder captures, returnerer string.match de innfangede delstrengene i stedet for hele treffet.
local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d) -- 2025 01 15Én capture
Én capture returnerer én strengverdi.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- AliceFlere captures
Flere captures returneres som flere verdier.
local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v) -- key valuePosisjonelle captures ()
En tom capture () fanger den gjeldende strengposisjonen som et tall.
local s = "hello world"
local pos = s:match("()world")
print(pos) -- 7 (position where world starts)Valgfrie captures
Fang en valgfri del ved å bruke ? etter den innfangede gruppen.
local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host) -- http example.comstring.find med captures
string.find med captures returnerer start, slutt og deretter de innfangede delstrengene.
local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num) -- 1 16 555-1234Nøstede captures
Captures kan være nøstet. De nummereres fra venstre mot høyre etter åpningsparentesen.
local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year) -- 2025-01-15 2025Beste praksis for captures
Bruk variabler etter en navnekonvensjon for bedre tydelighet. Unngå for dyp nøsting av captures. Mislykkede treff returnerer nil – kontroller alltid dette før De bruker captures.
local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") endMatching av e-postadresser
Et enkelt e-postmønster (ikke RFC-kompatibelt) med captures.
local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain) -- user example.comTabell med alle treff
Bruk string.gmatch for å samle alle treff i en tabell (dette gjennomgås i neste leksjon).
Spørsmål om captures
Hva returnerer "2025-01-15":match("(%d+)-(%d+)-(%d+)")?
Oppsummering: Captures og string.match
Captures bruker () i mønstre for å trekke ut delstrenger. string.match returnerer de innfangede verdiene direkte. En tom () fanger posisjoner. Kontroller alltid treffresultater mot nil.
Lær deg Lua med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 40
- Leksjoner
- 159
Ofte stilte spørsmål
Er leksjonen «Captures og string.match» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Captures og string.match», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Captures og string.match»?
Hent ut fangede grupper fra strenger med string.match og ()-captures. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lua Academy?
Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Captures og string.match»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?
Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Lua-mønstersyntaks
- Captures og string.match
- string.gmatch for tokenisering
- string.gsub for transformeringer