Lua Academy · Lektion

string.gmatch för tokenisering

Iterera över alla träffar i en sträng med string.gmatch.

Lektion 3 av 413 steg

string.gmatch för tokenisering är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 3 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 string.gmatch?

string.gmatch(s, pattern) returnerar en iterator som successivt returnerar alla matchningar av pattern i strängen s.

Iterera över ord

Tokenisera en sträng till ord genom att matcha sekvenser av tecken som inte är blanksteg.

local s = "the quick brown fox"
for word in s:gmatch("%S+") do
  print(word)
end

Samla matchningar i en tabell

Samla alla matchningar i en tabell för vidare bearbetning.

local function split(s, pat)
  local parts = {}
  for token in s:gmatch(pat) do
    parts[#parts+1] = token
  end
  return parts
end
local words = split("one two three", "%S+")
print(#words)  -- 3

Extrahera tal

Extrahera alla heltal ur en sträng med mönstret %d+.

local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
  print(tonumber(n))
end

Använda fångster i gmatch

När mönstret innehåller fångster returnerar varje iteration de fångade grupperna i stället för hela matchningen.

local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
  print(k, "->", v)
end

CSV-tokeniserare

Dela upp en CSV-rad genom att fånga allt mellan kommatecknen.

local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
  print(field)
end

Parsn­ing av nyckel-värde-par

Parsa en HTTP-liknande headersträng till en tabell med nyckel-värde-par.

local headers = "Content-Type: text/html; Content-Length: 1234"
local parsed = {}
for k, v in headers:gmatch("([%w%-]+): ([^;]+)") do
  parsed[k] = v:match("^%s*(.-)%s*$")
end

Räkna mönsterförekomster

Räkna hur många gånger ett mönster förekommer i en sträng.

local function count(s, pat)
  local n = 0
  for _ in s:gmatch(pat) do n = n + 1 end
  return n
end
print(count("banana", "an"))  -- 2

Menings-tokeniserare

Dela upp text i meningar genom att matcha fram till skiljetecken.

local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
  print(sent:match("^%s*(.-)%s*$"))
end

gmatch jämfört med string.find i en loop

gmatch är det rekommenderade sättet att iterera över alla matchningar. Att använda string.find i en while-loop är mer omständligt och felbenäget.

Unicode-begränsning

Lua-mönster arbetar med byte. Flerbytes-UTF-8-tecken kanske inte matchas korrekt av mönster för enskilda tecken. Använd ett UTF-8-bibliotek för fullständigt Unicode-stöd.

Fråga om gmatch

Vad itererar for w in s:gmatch("%S+") do över?

Sammanfattning: string.gmatch

string.gmatch är Lua:s standardtokeniserare. Använd den för att dela upp strängar, extrahera alla tal, parsa nyckel-värde-par och räkna mönsterförekomster i en ren iteratorloop.

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 ”string.gmatch för tokenisering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”string.gmatch för tokenisering”, 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 ”string.gmatch för tokenisering”?

Iterera över alla träffar i en sträng med string.gmatch. 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 3 av 4.

Hur lång tid tar lektionen ”string.gmatch för tokenisering”?

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