Después de más de medio año de desarrollo, se lanzó la versión 10.45 de la biblioteca de expresiones regulares compatibles con PERL. PCRE2, escrita en lenguaje C y distribuida bajo la licencia BSD. Esta es una versión relativamente importante que incluye nuevas funciones, correcciones de errores y algunos cambios con un impacto menor en la compatibilidad hacia atrás.
La versión 10.45 es la primera lanzada por los nuevos mantenedores del proyecto, quienes agradecen a Philip Hazel, el creador y mantenedor de los proyectos PCRE y PCRE2.
Lista de cambios:
- El proyecto de compilación JIT sljit ahora se utiliza como submódulo de Git.
- Se actualizaron los datos de Unicode a la versión 16.
- La coincidencia de propiedades Unicode Ll, Lt y Lu que no distingue entre mayúsculas y minúsculas se ha modificado para cumplir con Perl. Anteriormente, el patrón /p{Ll}/i solo consideraba caracteres en minúscula (a pesar de que se indicara que la coincidencia no era sensible a mayúsculas). Este cambio también afecta la coincidencia de clases POSIX que no distinguen entre mayúsculas y minúsculas, como por ejemplo [:lower:].
- Se agregó una nueva función scan_substring. Este es un nuevo tipo de afirmación que coincide con el contenido de un bloque capturado con un subpatrón.
Por ejemplo, la expresión b(w++)(*scan_substring:(1).+rh) encuentra una palabra que contiene la rara secuencia de letras 'rh' en inglés, que no está al principio. - Se agregó soporte para clases de símbolos compatibles con UTS#18 (Expresiones Regulares Unicode), mediante la nueva opción PCRE2_ALT_EXTENDED_CLASS. Para esto, se debe usar [ como metacaracter en clases de caracteres y los operadores &&, - y ~~ que permiten realizar fácilmente restas e intersecciones de clases de caracteres.
Por ejemplo, para coincidir con letras tailandesas o griegas (pero no con letras u otros símbolos en esas escrituras) se puede usar la expresión [p{L}&&[p{Thai}||p{Greek}]]. - Se agregó soporte para clases de caracteres extendidas al estilo Perl, utilizando la sintaxis (?[…]). Esto también permite expresar restas e intersecciones de clases de caracteres, pero utilizando una sintaxis diferente a la de UTS#18 (Expresiones Regulares Unicode).
Por ejemplo, para coincidir con letras tailandesas o griegas (pero no con letras u otros símbolos en esas escrituras) se puede usar la expresión (?[p{L} & (p{Thai} + p{Greek})]). - Mejoras significativas en el mecanismo de coincidencia de clases de caracteres. Las clases de caracteres compiladas son ahora más compactas y permiten una coincidencia más rápida para conjuntos de caracteres grandes o complejos, utilizando búsqueda binaria en el conjunto.
- Se ha añadido una nueva función pcre2_set_optimize() en la API para gestionar las optimizaciones.
- Numerosas mejoras en la función pcre2_substitute().
- Otras mejoras y correcciones de errores.
Fuente: linux.org.ru
