Grupos nomeados e âncoras
Expressões regulares avançadas.
Grupos nomeados e âncoras é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 4 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 Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Por que usar grupos nomeados?
Capturas numeradas como m[1] ficam difíceis de ler quando um padrão cresce. Grupos nomeados dão a cada captura um rótulo significativo.
Sintaxe: (?<name>pattern).
m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])Acessando capturas nomeadas
Acesse capturas nomeadas com uma chave de símbolo ou de cadeia de caracteres: m[:name]. O método named_captures retorna todas elas como uma tabela hash.
m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_capturesGrupos nomeados com =~
Quando um literal de expressão regular com grupos nomeados aparece à esquerda de =~, o Ruby cria automaticamente variáveis locais para cada nome.
if /(?<word>\w+)/ =~ 'hello'
puts word
endÂncoras: início e fim
Âncoras correspondem a posições, e não a caracteres:
^início de uma linha$fim de uma linha
Elas são essenciais para validar se uma entrada completa corresponde ao padrão.
puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))Âncoras de cadeia de caracteres \A e \z
^ e $ correspondem aos limites de linha, o que importa em cadeias de caracteres com várias linhas. Para a cadeia de caracteres completa, prefira \A (início) e \z (fim absoluto).
text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))Validando a entrada completa
Para verificar se uma cadeia de caracteres inteira corresponde a um formato, fixe as duas extremidades com âncoras. Isso rejeita cadeias com caracteres extras.
zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))Limites de palavra
\b é um limite de palavra: a posição entre um caractere de palavra e um caractere que não é de palavra. Ele corresponde a palavras completas sem consumir caracteres.
puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)Antevisão
Uma antevisão positiva (?=...) verifica o que vem a seguir sem incluir isso na correspondência. A antevisão negativa é (?!...).
puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))Verificação retrospectiva
Uma verificação retrospectiva (?<=...) verifica o que precede a correspondência. A verificação retrospectiva negativa é (?<!...).
m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])Grupos sem captura
Às vezes, você precisa de agrupamento para alternância ou quantificadores, mas não quer uma captura. Use (?:...) para criar um grupo sem captura.
m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.capturesJuntando tudo
Um validador realista usa âncoras, grupos nomeados e quantificadores em conjunto.
re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])Verificação rápida
Quais âncoras você deve usar para garantir que uma cadeia de caracteres completa corresponda, ignorando quebras de linha?
Recapitulação: grupos nomeados e âncoras
Você dominou ferramentas avançadas de expressões regulares:
- Grupos nomeados
(?<name>...)enamed_captures - Âncoras
^ $ \A \z \b - Antevisão
(?=)/(?!)e verificação retrospectiva(?<=)/(?<!) - Grupos sem captura
(?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])Perguntas Frequentes
A aula “Grupos nomeados e âncoras” é grátis?
Sim — o texto completo de “Grupos nomeados e âncoras” é 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 Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Grupos nomeados e âncoras”?
Expressões regulares avançadas. Você pratica Ruby 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 Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby 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 4 de 4.
Quanto tempo leva a aula “Grupos nomeados e âncoras”?
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 Ruby Academy?
Sim. Cada aula de Ruby 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
- Literais de expressões regulares
- Correspondência e captura
- Substituição
- Grupos nomeados e âncoras