La sección de referencia del Probador de Regex ya tenía cuatro pestañas — clases de caracteres, cuantificadores, grupos y banderas, y formatos comunes. Se acaba de añadir una quinta: una tabla dedicada que compara, función por función, cómo se escribe cada cosa en JavaScript, PCRE (PHP), Python y Java.
¿Qué se ha añadido exactamente al Probador de Regex?
Respuesta rápidaSe ha añadido una quinta pestaña en la sección «Tablas de referencia regex y chuleta», llamada «Diferencias PCRE/Python/Java», con una tabla comparativa completa de sintaxis entre los cuatro motores regex más comunes en desarrollo web.
Hasta ahora, la nota de precisión que acompaña a la herramienta ya avisaba de que «PCRE (PHP), el módulo re de Python y el motor regex de Java comparten la mayor parte de la sintaxis, pero pueden diferir ligeramente en funciones avanzadas» — pero esa advertencia se quedaba en una frase suelta, sin un lugar concreto donde ver la diferencia fila por fila. Eso es justo lo que resuelve la nueva pestaña: convierte esa advertencia genérica en una tabla consultable, con una columna por motor.
La tabla vive junto a las otras cuatro pestañas de referencia que ya existían (Clases de caracteres, Cuantificadores, Grupos y banderas, Formatos comunes), como una pestaña más dentro del mismo bloque — no es una sección aparte ni una herramienta nueva, sino una ampliación natural de la chuleta que el Probador de Regex ya ofrecía.
¿Dónde se encuentra y qué información concreta muestra?
Respuesta rápidaAbre la sección «Referencia» del Probador de Regex y haz clic en la pestaña «Diferencias PCRE/Python/Java»; verás una tabla con columnas JavaScript / PCRE (PHP) / Python (re) / Java, y una fila por cada función avanzada de regex.
Las filas cubren, entre otras cosas: la sintaxis de los grupos con nombre, la referencia inversa a un grupo con nombre, el soporte de lookbehind de longitud variable, los cuantificadores posesivos, los grupos atómicos, la bandera «dotall» (el punto capturando también saltos de línea), la bandera Unicode, y las clases Unicode con nombre como \p{L}. Cada fila muestra la sintaxis exacta —o la ausencia de soporte— en cada uno de los cuatro motores, en vez de una explicación genérica de «puede variar».
Por qué importa: un patrón sencillo de validación (email, código postal, fecha) casi siempre se comporta igual en los cuatro lenguajes. Las sorpresas aparecen justo en las funciones que ahora están listadas en esta tabla — por eso tiene sentido consultarla antes de portar un patrón con funciones avanzadas de un lenguaje a otro, en vez de después de que falle en producción.
Dos ejemplos concretos de lo que muestra la tabla
Respuesta rápidaDos casos donde la tabla es especialmente útil: la sintaxis de los grupos con nombre (que varía entre (?<n>..) y (?P<n>..) según el lenguaje) y el soporte de lookbehind de longitud variable (admitido en JavaScript y Java, pero no en Python).
Según la fila «Grupo con nombre» de la nueva tabla: JavaScript y Java esperan (?<n>..); Python (el módulo re estándar) solo acepta (?P<n>..); y PCRE (PHP) admite ambas formas indistintamente. Si escribes un patrón con un grupo con nombre en el navegador y lo copias literal a un script de Python, la sintaxis (?<n>..) no funcionará — hay que cambiarla a (?P<n>..). La fila de «Referencia inversa con nombre» sigue el mismo patrón: \k<n> en JavaScript y Java, frente a (?P=n) en Python.
El segundo ejemplo, la fila «Lookbehind (longitud variable)»: la tabla indica que los motores modernos de JavaScript y Java lo admiten, mientras que Python (con el módulo re estándar) se limita a lookbehind de longitud fija. Imagina —a modo de ejemplo ilustrativo, no una prueba real— un patrón como (?<=\d{1,3})kg (longitud variable, de uno a tres dígitos) para capturar una unidad de peso solo si va precedida de un número: ese patrón concreto no se ejecutaría en el módulo re de Python, algo que la tabla deja claro antes de que lo intentes en producción y te encuentres con un error de compilación del patrón.
📌 Cómo usarla en la práctica: consulta la tabla para saber qué sintaxis exacta espera el lenguaje de destino, y luego usa la pestaña «Generar código» (en la zona de la herramienta, no en la de referencia) para obtener el fragmento ya adaptado a JavaScript, Python, PHP o Java a partir de tu patrón actual.
Quinta pestaña, mismo lugar de siempre
La tabla nueva no cambia nada de lo que ya funcionaba: las cuatro pestañas de referencia anteriores (Clases de caracteres, Cuantificadores, Grupos y banderas, Formatos comunes) siguen exactamente igual. La quinta pestaña simplemente añade la pieza que faltaba —una comparación directa entre motores— en el mismo bloque de referencia donde ya buscabas la chuleta de símbolos regex.
Preguntas frecuentes
¿Dónde encuentro la nueva pestaña de diferencias entre motores regex?
En la sección «Tablas de referencia regex y chuleta» del Probador de Regex, junto a las pestañas «Clases de caracteres», «Cuantificadores», «Grupos y banderas» y «Formatos comunes», hay ahora una quinta pestaña llamada «Diferencias PCRE/Python/Java». Al hacer clic se muestra una tabla con columnas para JavaScript, PCRE (PHP), Python (re) y Java, fila por fila, para cada función avanzada de regex.
¿Qué diferencia concreta muestra la tabla sobre los grupos con nombre?
La tabla indica que JavaScript y Java usan (?<n>..), que Python (el módulo re estándar) usa (?P<n>..), y que PCRE (PHP) acepta ambas formas, (?<n>..) o (?P<n>..). Para la referencia inversa a un grupo con nombre, JavaScript y Java usan \k<n>, Python usa (?P=n), y PCRE admite las dos sintaxis.
¿Qué dice la nueva tabla sobre el lookbehind de longitud variable?
Según la tabla, JavaScript (en motores modernos) y Java admiten lookbehind de longitud variable, mientras que Python (el módulo re estándar) solo admite lookbehind de longitud fija. PCRE (PHP) también se limita en general a longitud fija, aunque una nota bajo la tabla aclara que versiones recientes de PHP (7.3+) añaden soporte parcial de longitud variable en ciertos casos.
¿La nueva tabla sustituye a la pestaña «Generar código» que ya existía?
No, son complementarias. La pestaña «Diferencias PCRE/Python/Java» (en la sección de referencia) te dice de un vistazo qué sintaxis exacta espera cada motor para una función concreta, como los grupos con nombre o los cuantificadores posesivos. La pestaña «Generar código» (en la zona de la herramienta, junto a «Coincidencias» y «Explicar») convierte tu patrón actual en código funcional para JavaScript, Python, PHP o Java. Se recomienda usar ambas: la tabla para entender la diferencia, y el generador de código para obtener el fragmento exacto a probar.
¿Qué muestra la tabla sobre los cuantificadores posesivos y los grupos atómicos?
La tabla indica que JavaScript no admite cuantificadores posesivos (como a++ o a*+) ni grupos atómicos ((?>..)); PCRE y Java sí los admiten con esa misma sintaxis; y Python no los admite en su módulo re estándar, aunque el grupo atómico está disponible desde Python 3.11 y los cuantificadores posesivos existen en el módulo regex de terceros, no en re.