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")) -- nilConjuntos 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]+")) -- 123Escapando 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
endstring.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 15Correspondê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
- Sintaxe de padrões do Lua
- Capturas e string.match
- string.gmatch para tokenização
- string.gsub para transformações