piapia123
es

Explicador de expresiones regulares

Web

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Desglosa una expresión regular parte por parte y añade qué coincide de verdad cada trozo. Al leer el patrón de otra persona lo difícil rara vez es la sintaxis: es que nadie te dice para qué sirve cada pieza — esa línea ilegible suele ser tres clases de caracteres y dos aserciones. Esto lo lee un analizador, no lo «explica un modelo». Una expresión regular tiene un único significado, y cuando un modelo se equivoca no tienes forma de comprobarlo: dirá «`*` significa una o más» con el mismo tono seguro, y si reescribes el código con esa explicación irás a peor. Un analizador que se equivoca falla un test (este módulo tiene 44 aserciones); un modelo que se equivoca, no. Hay tres cosas que se dicen a propósito: · Los cuantificadores van pegados a lo que modifican. En `ab*` el `*` se aplica a `b`, no a `ab`, así que la salida muestra dos líneas — `a` y `b*` — en vez de tres símbolos sueltos, que ocultarían justo ese hecho · Los metacaracteres dentro de una clase no se expanden. El `.` y el `*` de `[.*]` son esos dos caracteres, no «cualquier carácter» y «un cuantificador». Es la mala lectura más común de las regex, así que se dice en lugar de expandirse · Un cuantificador sin nada delante se señala. `*abc` es un error de sintaxis en casi todos los motores; tomarlo como un `*` literal te dejaría creyendo que coincide con uno ⚠️ No juzga si el patrón es correcto ni si es rápido — para eso ejecútalo de verdad con el probador de regex. Aquí solo se responde «qué dice».

Funciones

  • Enumera cada pieza con lo que coincide, indentada por profundidad de paréntesis
  • Los cuantificadores se quedan con el elemento que modifican (`a*` es una línea, no dos)
  • Las clases de caracteres en palabras: `[a-z0-9_]` lista cada rango y cada carácter; también las negadas
  • ⚠️ Los metacaracteres dentro de una clase no se expanden — los de `[.*]` son solo caracteres
  • Grupos por tipo: de captura, con nombre, sin captura, lookahead y lookbehind
  • Cubre clases abreviadas (`\d` `\w` `\s` `\b`), caracteres de control, retrorreferencias (numéricas y con nombre) y propiedades Unicode (`\p{…}`)
  • Explica cada modificador (`g` `i` `m` `s` `u` `y` `d` `v`)
  • ⚠️ Paréntesis sin cerrar, clases sin cerrar y cuantificadores huérfanos se reportan, en vez de explicarse por encima
  • Acepta la forma habitual `/patrón/modificadores`, o solo el patrón
  • Sin red y sin modelo: cada frase sale de la estructura del propio patrón

Cómo se usa

  1. Pega una regex, con o sin los delimitadores `/`
  2. Lee el desglose de abajo; la indentación muestra el anidamiento
  3. Los modificadores, si los hay, tienen su propia sección al final
  4. Para probar una coincidencia de verdad, usa el probador de regex

Preguntas frecuentes

¿Por qué no dejar que una IA explique las regex?
Porque no puedes comprobar su explicación. Una regex tiene un único significado, y un modelo que se equivoca suena igual de seguro: «`*` significa una o más» es justo lo que alguien que aún no lo sabe no puede detectar, y actuar en consecuencia empeora el código. Un analizador es distinto: lee un carácter y emite una frase, un fallo pone un test en rojo al instante (44 aserciones vigilan este módulo) y el mismo patrón recibe la misma explicación en cualquier sitio. No hay motivo para encargar a un modelo un trabajo que un explicador ya hace.
En `ab*`, ¿el asterisco se aplica a b o a ab?
A `b`. Un cuantificador se aplica al único elemento que tiene justo delante: `ab*` coincide con una `a` seguida de cero o más `b`. Para repetir la pareja hay que escribir `(ab)*`. Es el error más común de quien empieza, así que la salida pone el cuantificador en la misma línea que lo que modifica (`a` en una línea, `b*` en la siguiente) en vez de partirlo en los símbolos `a`, `b`, `*`, que ocultarían quién modifica a quién.
¿Qué significan el punto y el asterisco dentro de `[.*]`?
Son esos dos caracteres sin más. Dentro de una clase de caracteres, `.` ya no es «cualquier carácter» y `*` ya no es un cuantificador; son miembros normales, y `[.*]` coincide con un punto o un asterisco. Es una de las malas lecturas más frecuentes, por eso aquí no se expanden a propósito y se dice claramente que son literales.
¿En qué se diferencia del probador de regex?
El reparto es limpio: este responde «qué significa», aquel responde «con qué coincide de verdad». Usa este para leer el patrón de otra persona o revisar tu propia lógica, y aquel para saber si un texto concreto coincide y qué capturaron los grupos (también previsualiza reemplazos y avisa del riesgo de ReDoS). Ninguno sustituye al otro: la explicación más clara no reemplaza a una coincidencia real, y un resultado no explica el porqué.

Herramientas relacionadas