0Pricing
Lua Academy · Lección

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  15

Captura individual

Una captura individual devuelve un valor de tipo cadena.

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

Varias 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  value

Capturas 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.com

string.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-1234

Capturas 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  2025

Prá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") end

Coincidencia 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.com

Tabla 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

  1. Sintaxis de patrones de Lua
  2. Capturas y string.match
  3. string.gmatch para tokenización
  4. string.gsub para transformaciones
← Volver a Lua Academy