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 15Capture unique
Une capture unique renvoie une valeur de type chaîne.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- AliceCaptures 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 valueCaptures 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.comstring.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-1234Captures 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 2025Bonnes 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") endCorrespondance 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.comTable 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
- Syntaxe des motifs Lua
- Captures et string.match
- string.gmatch pour la tokenisation
- string.gsub pour les transformations