PCRE2 10.45

След повече от половин година разработка, се проведе пускането на версия 10.45 на библиотеката PERL-съвместими регулярни изрази PCRE2, написана на езика C и разпространявана под лиценз BSD. Това е сравнително голямо издание, включващо нови функции, някои корекции на грешки и няколко изменения, които имат малко влияние върху обратно съвместимостта.

Версия 10.45 е първото издание, подготвено от новите поддръжници на проекта, които благодарят на Филип Хейзъл, създател и поддръжник на проектите PCRE и PCRE2.

Списък с промени:

  • Проектът JIT-компилация sljit сега се използва като подмодул Git.
  • Обновени са данните на Юникода до версия 16.
  • Нечувствителното към регистъра съпоставяне на свойствата Unicode Ll, Lt и Lu е променено, за да отговаря на Perl. По-рано шаблонът /p{Ll}/i вземаше предвид само символите с малки букви (въпреки че беше указано съпоставяне без оглед на регистъра). Тази промяна също така влияе на нечувствителното към регистъра съпоставяне на POSIX класове, като например [:lower:].
  • Добавена е нова функция scan_substring. Това е нов тип твърдение, което съпоставя съдържанието на захванат блок с подшаблон.
    Например, изразът b(w++)(*scan_substring:(1).+rh) намира дума, съдържаща рядката в английския език последователност от букви „rh“, която не е в самото начало.
  • Добавена е поддръжка на класове символи, съвместими с UTS#18 (Unicode Regular Expressions), чрез новата опция PCRE2_ALT_EXTENDED_CLASS. За това трябва да се използва [ като метасимвол в символьните класове и оператори &&, — и ~~ , което позволява лесно извършване на разлики и пресечни точки между класовете символи.
    Например, за съпоставяне на тайски или гръцки букви (но не на букви или други символи в тези писмености), може да се използва изразът [p{L}&&[p{Thai}||p{Greek}]].
  • Добавена е поддръжка на разширени класове символи в стил Perl, използвайки синтаксиса (?[…]). Това също така позволява изразяване на разлики и пресечни точки между класовете символи, но с използване на синтаксис, различен от UTS#18 (Unicode Regular Expressions).
    Например, за съпоставяне на тайски или гръцки букви (но не на букви или други символи в тези писмености), може да се използва изразът (?[p{L} & (p{Thai} + p{Greek})]).
  • Значителни подобрения в механизма за съпоставяне на символни класове. Скомпилираните символни класове сега са по-компактни и осигуряват по-бързо съпоставяне за големи или сложни набори от символи, използвайки двоично търсене по набора.
  • В API е добавена нова функция pcre2_set_optimize() за управление на оптимизациите.
  • Множество подобрения на функцията pcre2_substitute().
  • Други подобрения и корекции на грешки.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster