0Pricing
Lua Academy · Leçon

Captures et string.match

Extrayez les groupes capturés des chaînes avec string.match et les captures ().

Captures et string.match est une leçon Lua 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 Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.

Que sont les captures ?

Les captures sont des sous-motifs entre parenthèses dans les motifs Lua. Elles extraient des sous-chaînes du texte correspondant.

string.match avec des captures

Lorsqu’un motif contient des captures, string.match renvoie les sous-chaînes capturées au lieu de la correspondance entière.

local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d)  -- 2025  01  15

Capture unique

Une capture unique renvoie une valeur de type chaîne.

local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name)  -- Alice

Captures multiples

Les captures multiples sont renvoyées sous forme de valeurs distinctes.

local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v)  -- key  value

Captures positionnelles ()

Une capture vide () capture la position actuelle dans la chaîne sous forme de nombre.

local s = "hello world"
local pos = s:match("()world")
print(pos)  -- 7 (position where world starts)

Captures facultatives

Capturez une partie facultative en plaçant ? après le groupe capturé.

local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host)  -- http  example.com

string.find avec des captures

string.find avec des captures renvoie le début, la fin, puis les sous-chaînes capturées.

local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num)  -- 1  16  555-1234

Captures imbriquées

Les captures peuvent être imbriquées. Elles sont numérotées de gauche à droite selon l’ordre des parenthèses ouvrantes.

local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year)  -- 2025-01-15  2025

Bonnes pratiques pour les captures

Utilisez des variables conformes à une convention de nommage pour plus de clarté. Évitez d’imbriquer excessivement les captures. Les échecs de correspondance renvoient nil : vérifiez toujours le résultat avant d’utiliser les captures.

local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") end

Correspondance d’adresses e-mail

Un motif simple (non conforme à la norme RFC) pour les adresses e-mail, avec des captures.

local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain)  -- user  example.com

Table de toutes les correspondances

Pour rassembler toutes les correspondances dans une table, utilisez string.gmatch (présenté dans la leçon suivante).

Question sur les captures

Que renvoie "2025-01-15":match("(%d+)-(%d+)-(%d+)") ?

Récapitulatif : captures et string.match

Les captures utilisent () dans les motifs pour extraire des sous-chaînes. string.match renvoie directement les valeurs capturées. Une capture vide () capture une position. Vérifiez toujours que le résultat de la correspondance n’est pas nil.

Questions Fréquemment Posées

La leçon « Captures et string.match » est-elle gratuite ?

Oui — le texte complet de « Captures et string.match » 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 Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Captures et string.match » ?

Extrayez les groupes capturés des chaînes avec string.match et les captures (). Tu pratiques Lua 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 Lua Academy ?

Aucune expérience préalable n'est requise. Lua 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 « Captures et string.match » ?

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 Lua Academy ?

Oui. Chaque leçon Lua 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. Syntaxe des motifs Lua
  2. Captures et string.match
  3. string.gmatch pour la tokenisation
  4. string.gsub pour les transformations
← Retour à Lua Academy