Articulo de referencia

Comparación de motores de expresiones regulares

Esta es una comparación de motores de expresiones regulares . Bibliotecas Formerly called Regex++. \n Included since version 2.13.0. \n C++ bindings were developed by Google and...

Esta es una comparación de motores de expresiones regulares .

Bibliotecas

  1. Anteriormente llamado Regex++.
  2. 1 2 Uno de los motores de expresiones regulares difusas .
  3. Incluido desde la versión 2.13.0.
  4. ICU4J, la versión Java, no admite expresiones regulares.
  5. Los enlaces de C++ fueron desarrollados por Google y pasaron a formar parte oficialmente de PCRE en 2006.

Idiomas

  1. "STD.regex - Lenguaje de programación D - Digital Mars" .
  2. "Dotnet/Corefx" . GitHub . 16 de febrero de 2022.
  3. "Dotnet/Corefx" . GitHub . 16 de febrero de 2022.

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

  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.
  2. 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.
  3. 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".
  4. "Sintaxis de expresiones regulares de Perl - 1.47.0" .
  5. "Guía del usuario - 1.47.0" .
  6. 1 2 FREJ no tienen cuantificadores repetitivos, pero tienen un elemento "opcional" que se comporta de manera similar al cuantificador simple "?".
  7. 1 2 A partir de ES2018
  8. 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.
  9. Solo compatible con la biblioteca de expresiones regulares opcional .
  10. Longitud variable, a través del motor subyacente ES2018+

Parte 2

  1. También conocidos como modificadores de banderas , modificadores de modos o letras de opción . Ejemplo de patrón: "(?i:test)".
  2. También llamadas subexpresiones independientes .
  3. Similar a las referencias inversas, pero con nombres en lugar de índices.
  4. Característica especial que permite emparejar construcciones equilibradas sin recursión.
  5. Se refiere a la posibilidad de incluir cuantificadores en las búsquedas hacia atrás, lo que hace que su longitud sea impredecible.
  6. 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.
  7. Disponible a partir de ICU55.
  8. Disponible a partir de JDK7.
  9. El soporte y el rango de propiedades dependen de la implementación.
  10. Se agregó soporte experimental en la versión 5.29.9.
  11. Compatible únicamente con Python v3.11 y versiones posteriores, y con la biblioteca de expresiones regulares opcional .
  12. Puede que solo esté disponible en la biblioteca de expresiones regulares cuando se utilice con versiones de Python posteriores a la 3.3.
  13. Solo compatible con la biblioteca de expresiones regulares opcional .
  14. vía (?ims:...) estilo
  15. (?>...) - transpilado a nativo
  16. ES2018 (?<nombre>... sintaxis)
  17. Bandera x (modo de espacio libre, siempre activada)
  18. a través de la bandera v siempre activa
  19. a través del motor ES2018+ subyacente

Características de la API

  1. 1 2 Significa que el formato se puede utilizar internamente sin conversión explícita.
  2. 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..
  3. 1 2 Admite el estándar Unicode 15.0 a partir de 2023..
  4. 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á"..
  5. Desde la versión 8.30.
  6. La coincidencia parcial se realiza implícitamente, lo que requiere una llamada separada a matchedLength() si falla una coincidencia exacta.
  7. Tcl incluye funciones para convertir a y desde UTF-8.
  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

  1. "Primeros pasos – Documentación de Hyperscan 5.4.0" .
  2. "Regex - Expresiones regulares en OCaml" .
  3. "Expresiones regulares recursivas: tutorial" .
  4. "UTS #18: Expresiones regulares Unicode" .
  5. "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 .
  • 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