0Pricing
Lua Academy · Aula

Capturas e string.match

Extraia grupos capturados de cadeias usando string.match e capturas ().

Capturas e string.match é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 2 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 são capturas?

Capturas são subpadrões entre parênteses nos padrões de Lua. Elas extraem substrings do texto correspondente.

string.match com capturas

Quando um padrão contém capturas, string.match retorna as substrings capturadas em vez da correspondência inteira.

local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d)  -- 2025  01  15

Captura única

Uma captura única retorna um valor de cadeia de caracteres.

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

Múltiplas capturas

Múltiplas capturas são retornadas como vários valores.

local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v)  -- key  value

Capturas posicionais ()

Uma captura vazia () captura a posição atual na cadeia de caracteres como um número.

local s = "hello world"
local pos = s:match("()world")
print(pos)  -- 7 (position where world starts)

Capturas opcionais

Capture uma parte opcional usando ? depois do grupo capturado.

local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host)  -- http  example.com

string.find com capturas

string.find com capturas retorna o início, o fim e, em seguida, as substrings capturadas.

local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num)  -- 1  16  555-1234

Capturas aninhadas

As capturas podem ser aninhadas. Elas são numeradas da esquerda para a direita, de acordo com o parêntese de abertura.

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

Boas práticas para capturas

Use variáveis com uma convenção de nomes para maior clareza. Não aninhe capturas em excesso. Falhas de correspondência retornam nil — sempre verifique o resultado antes de usar as capturas.

local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") end

Correspondência de endereços de e-mail

Um padrão simples de e-mail (não compatível com a RFC) com capturas.

local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain)  -- user  example.com

Tabela de todas as correspondências

Para coletar todas as correspondências em uma tabela, use string.gmatch (abordado na próxima lição).

Pergunta sobre capturas

O que "2025-01-15":match("(%d+)-(%d+)-(%d+)") retorna?

Recapitulação: capturas e string.match

As capturas usam () nos padrões para extrair substrings. string.match retorna diretamente os valores capturados. () vazio captura posições. Sempre verifique se o resultado da correspondência é nil.

Perguntas Frequentes

A aula “Capturas e string.match” é grátis?

Sim — o texto completo de “Capturas e string.match” é 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 “Capturas e string.match”?

Extraia grupos capturados de cadeias usando string.match e capturas (). 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 2 de 4.

Quanto tempo leva a aula “Capturas e string.match”?

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

  1. Sintaxe de padrões do Lua
  2. Capturas e string.match
  3. string.gmatch para tokenização
  4. string.gsub para transformações
← Voltar para Lua Academy