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.capturesDé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 hostAvant et après la correspondance
MatchData fournit des méthodes pratiques pour accéder au texte autour de la correspondance :
pre_matchla partie précédentepost_matchla 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 numsscan 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 pairsGé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'
endVariables 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
endExtraire 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 :
matchrenvoie MatchData ou nil- L’indice 0 correspond à la correspondance complète, les indices 1 et suivants aux groupes
capturesrenvoie tous les groupes sous forme de tableauscantrouve 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
- Littéraux d’expressions régulières
- Correspondance et capture
- Substitution
- Groupes nommés et ancres