0Pricing
Ruby Academy · Leçon

Correspondance et capture

match et captures

Correspondance et capture est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.

Objets MatchData

Lorsque vous appelez regex.match(string), Ruby renvoie un objet MatchData en cas de réussite, ou nil en cas d’échec.

MatchData contient le texte correspondant ainsi que les groupes capturés.

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

La correspondance complète : indice 0

L’indice 0 d’un objet MatchData contient toujours la sous-chaîne correspondant à l’ensemble du motif, quels que soient les groupes utilisés.

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

Groupes capturants

Les parenthèses ( ) créent des groupes capturants. Chaque groupe est accessible par un numéro à partir de 1.

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

La méthode de capture

captures renvoie un tableau de tous les groupes capturés (à l’exclusion de la correspondance complète à l’indice 0).

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

Déstructurer les captures

Comme captures renvoie un tableau, vous pouvez déstructurer directement le résultat dans des variables.

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

Avant et après la correspondance

MatchData fournit des méthodes pratiques pour accéder au texte autour de la correspondance :

  • pre_match la partie précédente
  • post_match la partie suivante
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)

scan pour toutes les correspondances

String#scan renvoie un tableau de toutes les correspondances présentes dans la chaîne, et pas seulement de la première.

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

scan avec des groupes

Si votre motif contient des groupes, scan renvoie un tableau de tableaux, un par correspondance, chacun contenant les captures de cette correspondance.

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

Gérer nil sans risque

N’oubliez jamais que match renvoie nil lorsqu’aucune correspondance n’est trouvée. Vérifiez ce résultat avant de l’utiliser.

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

Variables spéciales

Après une correspondance réussie, Ruby définit des variables globales : $~ contient MatchData, tandis que $1 et $2 contiennent les captures numérotées.

Elles sont pratiques dans les scripts courts, mais utiliser explicitement MatchData rend le code plus clair dans un vrai programme.

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

Extraire une date

Combinez les groupes et les captures pour extraire des données structurées d’une chaîne en une seule étape.

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

Vérification rapide

Étant donné 'a=1 b=2'.scan(/(\w)=(\d)/), quelle est la structure du résultat ?

Récapitulatif : rechercher et capturer

Vous pouvez désormais extraire des données des correspondances :

  • match renvoie MatchData ou nil
  • L’indice 0 correspond à la correspondance complète, les indices 1 et suivants aux groupes
  • captures renvoie tous les groupes sous forme de tableau
  • scan trouve toutes les correspondances dans la chaîne
  • Vérifiez toujours que le résultat n’est pas nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)

Questions Fréquemment Posées

La leçon « Correspondance et capture » est-elle gratuite ?

Oui — le texte complet de « Correspondance et capture » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Correspondance et capture » ?

match et captures Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Ruby Academy ?

Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Correspondance et capture » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?

Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Littéraux d’expressions régulières
  2. Correspondance et capture
  3. Substitution
  4. Groupes nommés et ancres
← Retour à Ruby Academy