0Pricing
Lua Academy · Aula

Sintaxe de padrões do Lua

Aprenda classes de caracteres %d, %a, %s, âncoras e quantificadores nos padrões do Lua.

Sintaxe de padrões do Lua é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 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.

Padrões do Lua em comparação com expressões regulares

Lua usa sua própria linguagem de padrões, não expressões regulares POSIX completas. Ela é mais simples e rápida, mas não oferece alternância (|) nem antecipações.

Classes de caracteres

%d dígito, %a letra, %l minúscula, %u maiúscula, %s espaço em branco, %p pontuação, %w alfanumérico. As versões maiúsculas negam: %D = não dígito.

Quantificadores

* zero ou mais (ganancioso), + um ou mais, ? zero ou um, - zero ou mais (preguiçoso/menor correspondência).

local s = "hello world"
print(s:match("%a+"))   -- hello (first word)
print(s:match(".-o"))   -- hell (lazy stops early)

Âncoras

^ ancora no início da cadeia de caracteres, $ ancora no final.

print(("hello"):match("^h"))     -- h
print(("hello"):match("o$"))     -- o
print(("hello"):match("^world")) -- nil

Conjuntos de caracteres com []

Classes de caracteres personalizadas: [aeiou] corresponde a qualquer vogal, [^aeiou] corresponde a qualquer caractere que não seja uma vogal, [a-z] corresponde a letras minúsculas.

local s = "Hello World 123"
print(s:match("[A-Z]"))     -- H
print(s:match("[0-9]+"))    -- 123

Escapando caracteres especiais

Os caracteres especiais ( ) . % + - * ? [ ^ $ devem ser escapados com %.

local s = "price: 3.14"
print(s:match("%d+%.%d+"))  -- 3.14 (. escaped to match literal dot)

O curinga .

. corresponde a qualquer caractere individual. Combine-o com quantificadores: .- é a correspondência preguiçosa para qualquer sequência.

print(("abc123"):match("(.-)%d"))  -- abc (lazy, stops at first digit)

Padrão de fronteira %f

%f[set] corresponde a uma posição vazia entre um caractere que não está em set e um caractere que está em set — útil para limites de palavras.

local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
  print(w)  -- hello, world, foo
end

string.find versus string.match

string.find retorna os índices inicial e final (além das capturas). string.match retorna diretamente o texto correspondente (ou as capturas).

local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j)           -- 7  16
print(s:match("(%d+)-(%d+)-(%d+)"))  -- 2025  01  15

Correspondência balanceada %b

%bxy corresponde a um par balanceado dos caracteres x e y. Por exemplo, %b() corresponde a parênteses balanceados, incluindo os aninhados.

local s = "func(a, (b+c), d)"
print(s:match("%b()"))  -- (a, (b+c), d)

Limitações dos padrões

Os padrões de Lua não oferecem suporte a: alternância (a|b), referências retroativas, antecipação/retrospecção ou grupos nomeados. Para esses casos, use LPEG ou uma biblioteca externa de expressões regulares.

Pergunta sobre a sintaxe de padrões

Qual padrão corresponde a um ou mais dígitos?

Recapitulação: sintaxe de padrões de Lua

Os padrões de Lua usam as classes %d %a %s, os quantificadores * + ? -, as âncoras ^ $, os conjuntos [] e %b para correspondências balanceadas. Eles são eficientes, mas não oferecem alternância de expressões regulares.

Perguntas Frequentes

A aula “Sintaxe de padrões do Lua” é grátis?

Sim — o texto completo de “Sintaxe de padrões do Lua” é 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 “Sintaxe de padrões do Lua”?

Aprenda classes de caracteres %d, %a, %s, âncoras e quantificadores nos padrões do Lua. 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 1 de 4.

Quanto tempo leva a aula “Sintaxe de padrões do Lua”?

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