Após mais de seis meses de desenvolvimento, foi lançado o versão 10.45 da biblioteca de expressões regulares compatíveis com PERL. PCRE2, escrita em C e distribuída sob a licença BSD. Este é um lançamento relativamente grande, incluindo novas funcionalidades, algumas correções de bugs e várias mudanças que têm um impacto menor na compatibilidade retroativa.
A versão 10.45 é o primeiro lançamento preparado pelos novos mantenedores do projeto, que agradecem a Philip Hazel, criador e mantenedor dos projetos PCRE e PCRE2.
Lista de mudanças:
- O projeto JIT-compilation sljit agora é utilizado como um submódulo Git.
- Os dados do Unicode foram atualizados para a versão 16.
- A correspondência de propriedades Unicode Ll, Lt e Lu, que não diferencia maiúsculas de minúsculas, foi alterada para corresponder ao Perl. Anteriormente, o padrão /p{Ll}/i considerava apenas caracteres minúsculos (mesmo que a correspondência sem considerar maiúsculas fosse especificada). Essa mudança também afeta a correspondência sem distinção de maiúsculas de classes POSIX, como por exemplo [:lower:].
- Foi adicionada uma nova função scan_substring. Este é um novo tipo de afirmação que combina o conteúdo de um bloco capturado com um sub-padrão.
Por exemplo, a expressão b(w++)(*scan_substring:(1).+rh) encontra uma palavra contendo a sequência de letras 'rh', que é rara na língua inglesa e que não está no início. - Foi adicionada a compatibilidade com classes de caracteres que respeitam UTS#18 (Expressões Regulares Unicode), através da nova opção PCRE2_ALT_EXTENDED_CLASS. Para isso, deve-se usar [ como metacaractere nas classes de caracteres e os operadores &&, — e ~~ que permitem facilmente realizar subtrações e interseções de classes de caracteres.
Por exemplo, para combinar letras tailandesas ou gregas (mas não letras ou outros caracteres dessas escritas), pode-se usar a expressão [p{L}&&[p{Thai}||p{Greek}]]. - Foi adicionada a compatibilidade com classes de caracteres expandidas no estilo Perl, utilizando a sintaxe (?[…]). Isso também permite expressar subtrações e interseções de classes de caracteres, mas com uma sintaxe diferente de UTS#18 (Expressões Regulares Unicode).
Por exemplo, para combinar letras tailandesas ou gregas (mas não letras ou outros caracteres dessas escritas), pode-se usar a expressão (?[p{L} & (p{Thai} + p{Greek})]). - Melhorias significativas no mecanismo de correspondência de classes de caracteres. As classes de caracteres compiladas agora são mais compactas e oferecem correspondência mais rápida para grandes ou complexos conjuntos de caracteres, utilizando busca binária no conjunto.
- Uma nova função pcre2_set_optimize() foi adicionada à API para gerenciar otimizações.
- Várias melhorias na função pcre2_substitute().
- Outras melhorias e correções de bugs.
Fonte: linux.org.ru
