0Pricing
Ruby Academy · Aula

Correspondência e captura

match e capturas.

Correspondência e captura é uma aula grátis de Ruby 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 Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.

Objetos MatchData

Quando você chama regex.match(string), o Ruby retorna um objeto MatchData em caso de sucesso ou nil em caso de falha.

MatchData contém o texto correspondente e todos os grupos capturados.

m = /world/.match('hello world')
puts m.class
puts(m[0])

A correspondência completa: índice 0

O índice 0 de um MatchData sempre representa a subcadeia inteira correspondente, independentemente dos grupos existentes.

m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)

Grupos de captura

Os parênteses ( ) criam grupos de captura. Cada grupo pode ser acessado por um número a partir de 1.

m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])

O método de capturas

captures retorna uma matriz com todos os grupos capturados, excluindo a correspondência completa no índice 0.

m = /(\w+)@(\w+)/.match('alice@example')
p m.captures

Desestruturando capturas

Como captures retorna uma matriz, você pode desestruturar o resultado diretamente em variáveis.

user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts host

Texto anterior e posterior à correspondência

MatchData oferece recursos auxiliares para acessar o texto ao redor da correspondência:

  • pre_match a parte anterior
  • post_match a parte posterior
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)

scan para todas as correspondências

String#scan retorna uma matriz com todas as correspondências da cadeia de caracteres, não apenas a primeira.

nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p nums

scan com grupos

Se o seu padrão tiver grupos, scan retornará uma matriz de matrizes, uma para cada correspondência, contendo as capturas dessa correspondência.

pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairs

Como lidar com nil com segurança

Lembre-se sempre de que match retorna nil quando nada corresponde. Verifique esse caso antes de usar o resultado.

m = /(\d+)/.match('no digits here')
if m
  puts m[1]
else
  puts 'no match found'
end

Variáveis especiais

Depois de uma correspondência bem-sucedida, o Ruby define variáveis globais: $~ é o MatchData, e $1 e $2 são as capturas numeradas.

Essas variáveis são úteis em scripts rápidos, mas usar MatchData explicitamente torna o código real mais claro.

if 'name: Alice' =~ /name: (\w+)/
  puts $1
end

Extraindo uma data

Combine grupos e capturas para extrair dados estruturados de uma cadeia de caracteres em uma única etapa.

year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"

Verificação rápida

Dado 'a=1 b=2'.scan(/(\w)=(\d)/), qual é o formato do resultado?

Recapitulação: correspondência e captura

Agora você pode extrair dados de correspondências:

  • match retorna MatchData ou nil
  • O índice 0 é a correspondência completa; os índices a partir de 1 são os grupos
  • captures retorna todos os grupos em uma matriz
  • scan encontra todas as correspondências na cadeia de caracteres
  • Verifique sempre se o resultado não é nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)

Perguntas Frequentes

A aula “Correspondência e captura” é grátis?

Sim — o texto completo de “Correspondência e captura” é 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 “Correspondência e captura”?

match e capturas. 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 2 de 4.

Quanto tempo leva a aula “Correspondência e captura”?

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

  1. Literais de expressões regulares
  2. Correspondência e captura
  3. Substituição
  4. Grupos nomeados e âncoras
← Voltar para Ruby Academy