След повече от половин година разработка, се проведе пускането на версия 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
