Capturas y string.match
Extraiga grupos capturados de strings mediante string.match y las capturas ().
Capturas y string.match es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué son las capturas?
Las capturas son subpatrones entre paréntesis en los patrones de Lua. Extraen subcadenas del texto coincidente.
string.match con capturas
Cuando un patrón contiene capturas, string.match devuelve las subcadenas capturadas en lugar de la coincidencia completa.
local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d) -- 2025 01 15Captura individual
Una captura individual devuelve un valor de tipo cadena.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- AliceVarias capturas
Varias capturas se devuelven como varios valores.
local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v) -- key valueCapturas posicionales ()
Una captura vacía () captura la posición actual en la cadena como un número.
local s = "hello world"
local pos = s:match("()world")
print(pos) -- 7 (position where world starts)Capturas opcionales
Para capturar una parte opcional, use ? después del grupo capturado.
local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host) -- http example.comstring.find con capturas
string.find con capturas devuelve el inicio, el final y, después, las subcadenas capturadas.
local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num) -- 1 16 555-1234Capturas anidadas
Las capturas pueden anidarse. Se numeran de izquierda a derecha según el paréntesis de apertura.
local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year) -- 2025-01-15 2025Prácticas recomendadas para las capturas
Use variables con una convención de nombres clara. No anide demasiadas capturas. Los fallos de coincidencia devuelven nil; compruébelo siempre antes de usar las capturas.
local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") endCoincidencia de direcciones de correo electrónico
Un patrón sencillo de correo electrónico (no compatible con RFC) con capturas.
local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain) -- user example.comTabla de todas las coincidencias
Para recopilar todas las coincidencias en una tabla, use string.gmatch (se explica en la lección siguiente).
Pregunta sobre las capturas
¿Qué devuelve "2025-01-15":match("(%d+)-(%d+)-(%d+)")?
Resumen: capturas y string.match
Las capturas usan () en los patrones para extraer subcadenas. string.match devuelve directamente los valores capturados. Una captura vacía () captura posiciones. Compruebe siempre si el resultado de la coincidencia es nil.
Preguntas frecuentes
¿La lección «Capturas y string.match» es gratis?
Sí — el texto completo de «Capturas y string.match» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Capturas y string.match»?
Extraiga grupos capturados de strings mediante string.match y las capturas (). Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Capturas y string.match»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sintaxis de patrones de Lua
- Capturas y string.match
- string.gmatch para tokenización
- string.gsub para transformaciones