Grupos de captura y grupos con nombre
Paréntesis para capturar, grupos con nombre (?P ...), re.fullmatch(), lookahead y lookbehind.
Grupos de captura y grupos con nombre es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 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 Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Por qué usar grupos?
Los grupos permiten aislar partes de una coincidencia para extraer exactamente la sección que necesita: el código de área de un número de teléfono, el año de una fecha o el nombre de usuario de un correo electrónico.
En esta lección se explican los grupos de captura, con nombre, no capturantes y los lookarounds.
Grupos de captura con ( )
Rodee una parte del patrón con paréntesis para capturarla. La coincidencia completa y cada grupo quedan disponibles en el objeto Match.
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group()) # "2026-05-29" (whole match)
print(m.group(1)) # "2026"
print(m.group(2)) # "05"match.group, groups, groupdict
Accesores útiles:
m.group(0)— coincidencia completam.group(n)— la captura número nm.groups()— una tupla con todas las capturas
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups()) # ("2026", "05", "29")
year, month, day = m.groups()Grupos con nombre con (?P<name>...)
Numerar los grupos puede resultar frágil. Los grupos con nombre utilizan (?P<name>...) para que pueda hacer referencia a las capturas mediante un nombre significativo.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year")) # "2026"
print(m.group("month")) # "05"groupdict para obtener resultados estructurados
m.groupdict() devuelve todos los grupos con nombre como un diccionario, perfecto para convertir texto coincidente en registros estructurados.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}Grupos no capturantes (?:...)
A veces necesita paréntesis únicamente para agrupar (por ejemplo, para aplicar un cuantificador), pero NO desea realizar una captura. Utilice (?:...).
Así mantiene ordenada la numeración de los grupos.
import re
# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1)) # "42" -> group 1 is the digits, not "ab"Referencias inversas
Una referencia inversa \1 coincide con el mismo texto que un grupo capturó anteriormente. Resulta útil para encontrar palabras repetidas.
import re
# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]Lookahead (?=...)
Un lookahead positivo (?=...) comprueba qué debe aparecer a continuación, sin consumirlo. El texto comprobado no forma parte de la coincidencia.
Aquí hacemos coincidir un número solo si va seguido de "px".
import re
print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"] -> "20" skipped (not followed by px)Lookahead negativo (?!...)
Un lookahead negativo (?!...) comprueba qué NO debe aparecer a continuación. Haga coincidir el número solo si NO va seguido de "px".
import re
print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by pxLookbehind (?<=...) y (?<!...)
El lookbehind comprueba qué aparece antes de la coincidencia sin consumirlo:
(?<=...)positivo: debe estar precedido por(?<!...)negativo: NO debe estar precedido por
Aquí extraemos cantidades precedidas por un signo de dólar, sin capturar el signo.
import re
print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"] -> only the amount after $Combinación de grupos y lookarounds
Los extractores reales combinan estas herramientas. Este patrón extrae un precio con nombre que debe estar precedido por un símbolo de moneda y seguido de una parte decimal:
import re
text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents")) # 1299 99Comprobación rápida: grupos con nombre
Quiere extraer coincidencias mediante un nombre descriptivo como "year" en lugar de un número.
Resumen: grupos y lookarounds
Ahora puede extraer estructuras precisas del texto:
( )grupos de captura conm.group(n)ym.groups()(?P<name>...)grupos con nombre conm.groupdict()(?:...)grupos sin captura para agrupar de forma ordenada- Referencias inversas
\1para repeticiones - Lookahead
(?=)/(?!)y lookbehind(?<=)/(?<!)
A continuación: combinarlo todo para limpiar texto destinado a la IA.
Preguntas frecuentes
¿La lección «Grupos de captura y grupos con nombre» es gratis?
Sí — el texto completo de «Grupos de captura y grupos con nombre» 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 Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Grupos de captura y grupos con nombre»?
Paréntesis para capturar, grupos con nombre (?P ...), re.fullmatch(), lookahead y lookbehind. Practicas Learn AI with Python 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 Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python 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 3 de 4.
¿Cuánto tiempo toma la lección «Grupos de captura y grupos con nombre»?
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 Learn AI with Python?
Sí. Cada lección de Learn AI with Python 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
- Patrones de regex y clases de caracteres
- Módulo re: search, match, findall, sub
- Grupos de captura y grupos con nombre
- Limpieza de texto para IA con regex