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.capturesDesestruturando 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 hostTexto anterior e posterior à correspondência
MatchData oferece recursos auxiliares para acessar o texto ao redor da correspondência:
pre_matcha parte anteriorpost_matcha 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 numsscan 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 pairsComo 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'
endVariá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
endExtraindo 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:
matchretorna MatchData ou nil- O índice 0 é a correspondência completa; os índices a partir de 1 são os grupos
capturesretorna todos os grupos em uma matrizscanencontra 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
- Literais de expressões regulares
- Correspondência e captura
- Substituição
- Grupos nomeados e âncoras