Una expresión regular describe la forma de un texto. Sirve cuando buscas algo más flexible que una cadena exacta: «uno o más dígitos», «tres letras seguidas» o «un código que ocupa toda la entrada».
En esta lección solo necesitas cuatro piezas: texto literal, \d, + y las funciones de búsqueda.
Construir un patrón corto pieza a pieza y comprobar qué fragmentos del texto coincide cada pieza.
Empieza buscando una forma sencilla dentro de un texto mayor
import re texto = "Pedido 482 preparado" coincidencia = re.search(r"\d+", texto) print(coincidencia.group())
\d representa un dígito. + pide una o más repeticiones de la pieza anterior. Por eso el patrón encuentra 482 como un bloque.
El prefijo r crea un raw string y hace más cómodo escribir patrones con barras invertidas.
search encuentra una coincidencia; findall reúne todas
import re texto = "cajas: 4, unidades: 18" numeros = re.findall(r"\d+", texto) print(numeros)
El resultado contiene strings porque la regex está trabajando sobre texto. Si después quieres sumar, convierte explícitamente esos fragmentos a int.
Predicción: antes de ejecutar, localiza visualmente cada grupo continuo de dígitos. Eso es exactamente lo que findall va a recoger.
Ampliación: validar toda la entrada
fullmatch(), clases de caracteres como [A-Z] y cuantificadores exactos como {3} son útiles, pero no forman parte del núcleo. Primero domina literal, \d, +, search y findall.
Construye el patrón y observa qué se ilumina
\dun dígito → 42 y 7\d+uno o más dígitos → 42 y 7El + no significa “suma”: dentro de una regex significa “repite la pieza anterior una o más veces”.
Completa el patrón mínimo para encontrar los dos bloques numéricos del texto.
['42', '7']
La salida aparecerá aquí.
Necesito una pista
- Empieza por la pieza que significa “dígito”:
\d. - Añade
+para agrupar varios dígitos consecutivos.
Ver una solución razonada
import re texto = "producto 42, lote 7" ids = re.findall(r"\d+", texto) print(ids)
Una regex gigante no es una medalla de buen código
Si el patrón crece hasta que nadie puede explicar qué valida, dividir el problema o usar código normal puede ser mejor. Las regex son excelentes para patrones locales; no tienen que resolver por sí solas toda la lógica de negocio.
puedes mirar r"\d+" y explicar cada pieza, y sabes elegir entre buscar una parte del texto o validar la cadena completa.