Esta es una comparación de motores de expresiones regulares .
Bibliotecas
Idiomas
Características del idioma
NOTA: Una aplicación que utiliza una biblioteca para la compatibilidad con expresiones regulares no necesariamente admite todas las funciones de la biblioteca; por ejemplo, GNU grep utiliza PCRE, pero no admite la búsqueda anticipada, aunque PCRE sí la admite.
Parte 1
- ↑ Los cuantificadores no codiciosos coinciden con la menor cantidad de caracteres posible, en lugar de la cantidad predeterminada. Cabe destacar que muchos motores antiguos, anteriores a POSIX, eran no codiciosos y no tenían cuantificadores codiciosos.
- ↑ Los grupos tímidos , también llamados grupos sin captura , no pueden ser referenciados con referencias inversas; los grupos sin captura se utilizan para acelerar la coincidencia cuando no es necesario acceder al contenido del grupo posteriormente.
- ↑ Las retroreferencias permiten hacer referencia a grupos previamente coincidentes en partes posteriores de la expresión regular y/o la cadena de reemplazo (cuando corresponda). Por ejemplo, ([ab]+)\1 coincide con "abab" pero no con "abaab".
- ↑ "Sintaxis de expresiones regulares de Perl - 1.47.0" .
- ↑ "Guía del usuario - 1.47.0" .
- 1 2 FREJ no tienen cuantificadores repetitivos, pero tienen un elemento "opcional" que se comporta de manera similar al cuantificador simple "?".
- 1 2 A partir de ES2018
- ↑ El único cuantificador no codicioso de Lua es
-, que es una versión no codiciosa de*. No tiene versiones no codiciosas de+o?; en el primer caso, el efecto no codicioso se puede lograr repitiendo el token seguido de-, pero en el segundo caso, no hay un equivalente. - ↑ Solo compatible con la biblioteca de expresiones regulares opcional .
- ↑ Longitud variable, a través del motor subyacente ES2018+
Parte 2
- ↑ También conocidos como modificadores de banderas , modificadores de modos o letras de opción . Ejemplo de patrón: "(?i:test)".
- ↑ También llamadas subexpresiones independientes .
- ↑ Similar a las referencias inversas, pero con nombres en lugar de índices.
- ↑ Característica especial que permite emparejar construcciones equilibradas sin recursión.
- ↑ Se refiere a la posibilidad de incluir cuantificadores en las búsquedas hacia atrás, lo que hace que su longitud sea impredecible.
- 1 2 3 4 5 6 7 8 9 La compatibilidad con propiedades Unicode puede ser incompleta (¡los productos se actualizan continuamente!). Todas estarán incompletas cuando se publique una nueva revisión de Unicode hasta que se actualicen para cumplir con los estándares.
- ↑ Disponible a partir de ICU55.
- ↑ Disponible a partir de JDK7.
- ↑ El soporte y el rango de propiedades dependen de la implementación.
- ↑ Se agregó soporte experimental en la versión 5.29.9.
- ↑ Compatible únicamente con Python v3.11 y versiones posteriores, y con la biblioteca de expresiones regulares opcional .
- ↑ Puede que solo esté disponible en la biblioteca de expresiones regulares cuando se utilice con versiones de Python posteriores a la 3.3.
- ↑ Solo compatible con la biblioteca de expresiones regulares opcional .
- ↑ vía (?ims:...) estilo
- ↑ (?>...) - transpilado a nativo
- ↑ ES2018 (?<nombre>... sintaxis)
- ↑ Bandera x (modo de espacio libre, siempre activada)
- ↑ a través de la bandera v siempre activa
- ↑ a través del motor ES2018+ subyacente
Características de la API
- 1 2 Significa que el formato se puede utilizar internamente sin conversión explícita.
- ↑ Coincidencia parcial de la expresión regular completa. Por ejemplo, el patrón ".*END$" coincidirá parcialmente con cualquier cadena, pero solo con las cadenas que terminen completamente en END..
- 1 2 Admite el estándar Unicode 15.0 a partir de 2023..
- ↑ La implementación utiliza la compatibilidad y las características originales de UCS-2 , por lo que solo reconoce un total de 64 000 caracteres (frente a los 1 112 064 caracteres de UTF-16 ). Un representante de Microsoft para desarrolladores respondió a un informe de error sobre este tema en 2010 con la indicación de que "no se solucionará"..
- ↑ Desde la versión 8.30.
- ↑ La coincidencia parcial se realiza implícitamente, lo que requiere una llamada separada a matchedLength() si falla una coincidencia exacta.
- ↑ Tcl incluye funciones para convertir a y desde UTF-8.
- ↑ wxRegEx utiliza cualquier biblioteca POSIX proporcionada por el sistema o, si no está disponible y para el modo Unicode, utilizala biblioteca de Henry Spencer .
Véase también
Referencias
- ↑ "Primeros pasos – Documentación de Hyperscan 5.4.0" .
- ↑ "Regex - Expresiones regulares en OCaml" .
- ↑ "Expresiones regulares recursivas: tutorial" .
- ↑ "UTS #18: Expresiones regulares Unicode" .
- ↑ "ECMA-262, 9.ª edición, junio de 2018. Especificación del lenguaje ECMAScript® 2018" . www.ecma-international.org . Consultado el 4 de agosto de 2020 .
Enlaces externos
- Comparación de sabores de expresiones regulares : una comparación detallada de los sabores de expresiones regulares más populares.
- Resumen de la sintaxis de las expresiones regulares
- Pruebas de expresiones regulares en línea : con soporte para Java, JavaScript, .Net, PHP, Python y Ruby.
- Implementación de expresiones regulares : serie de artículos de Russ Cox, autor de RE2.
- Motores de expresiones regulares
Categorías :
- Coincidencia de patrones
- Comparación de software
- expresiones regulares