string.gmatch para tokenização
Percorra todas as correspondências de uma cadeia com string.gmatch.
string.gmatch para tokenização é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
O que é string.gmatch?
string.gmatch(s, pattern) retorna um iterador que retorna sucessivamente todas as correspondências de pattern na cadeia de caracteres s.
Iterando sobre palavras
Divida uma cadeia de caracteres em palavras, encontrando sequências de caracteres que não sejam espaços.
local s = "the quick brown fox"
for word in s:gmatch("%S+") do
print(word)
endColetando correspondências em uma tabela
Reúna todas as correspondências em uma tabela para processamento posterior.
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) -- 3Extraindo números
Extraia todos os números inteiros de uma cadeia de caracteres com um padrão %d+.
local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
print(tonumber(n))
endUsando capturas em string.gmatch
Quando o padrão tem capturas, cada iteração retorna os grupos capturados em vez da correspondência inteira.
local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
print(k, "->", v)
endTokenizador de CSV
Divida uma linha de CSV capturando tudo o que estiver entre vírgulas.
local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
print(field)
endAnálise de pares chave-valor
Analise uma cadeia de cabeçalho no estilo HTTP e transforme-a em uma tabela de pares chave-valor.
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*$")
endContando ocorrências de um padrão
Conte quantas vezes um padrão aparece em uma cadeia de caracteres.
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")) -- 2Tokenizador de frases
Divida o texto em frases encontrando correspondências até os sinais de pontuação.
local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
print(sent:match("^%s*(.-)%s*$"))
endstring.gmatch versus string.find em um laço
gmatch é a forma preferida de iterar sobre todas as correspondências. Usar string.find em um laço while é mais prolixo e propenso a erros.
ressalva sobre Unicode
Os padrões de Lua operam sobre bytes. Caracteres UTF-8 com vários bytes podem não corresponder corretamente a padrões de um único caractere. Para obter suporte completo a Unicode, use uma biblioteca UTF-8.
Pergunta sobre string.gmatch
Sobre o que for w in s:gmatch("%S+") do itera?
Recapitulação: string.gmatch
string.gmatch é o tokenizador padrão de Lua. Use-o para dividir cadeias de caracteres, extrair todos os números, analisar pares chave-valor e contar ocorrências de padrões em um laço de iterador organizado.
Perguntas Frequentes
A aula “string.gmatch para tokenização” é grátis?
Sim — o texto completo de “string.gmatch para tokenização” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “string.gmatch para tokenização”?
Percorra todas as correspondências de uma cadeia com string.gmatch. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “string.gmatch para tokenização”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Sintaxe de padrões do Lua
- Capturas e string.match
- string.gmatch para tokenização
- string.gsub para transformações