PCRE2 10.37

Набор функций PCRE2 на языке Си с реализацией регулярных выражений и средств сопоставления с образцом (pattern matching), близких по синтаксису и семантике к регулярным выражениям языка Perl 5.

PCRE2 представляет собой переработанную реализацию оригинальной библиотеки PCRE с несовместимым API и расширенными возможностями. Библиотека основана разработчиками почтового сервера Exim и распространяется под лицензией BSD. В том или ином виде доступна для очень многих языков программирования. В частности, в PHP модуль PCRE включен в ядро. 

Функция pcre_compile компилирует регулярное выражение во внутреннее представление библиотеки. Первый аргумент — ссылка на содержащую регулярное выражение строку. Во втором можно указать различные атрибуты (соответствующие опциям /igms… в Perl). Последний аргумент — ссылка на таблицу кодировки, созданную pcre_maketables. Если при компиляции шаблона произошла ошибка, возвращает NULL. Функцию pcre_exec используют для поиска совпадений. В первом аргументе передают значение, возвращённое pcre_compile. Во втором — дополнительные сведения, возвращённые функцией pcre_study. Следующие три аргумента — анализируемая строка, её длина и смещение, начиная с которого будет обрабатываться строка. Затем — параметр, указывающий опции (их подробное описание см. в документации). 

Основные изменения в новой версии библиотеки:

  • Из библиотеки libpcre2-posix удалены символы POSIX-функций, такие как regcomp, так как они вызывали проблемы у некоторых приложений. Патч pcre2-symbol-clash.patch принят в апстрим. Также обновлена версия ABI этой библиотеки.
  • Исправлена проблема, гипотетически приводящая к разыменованию нулевого указателя.
  • Исправлены две ошибки при обработке очень больших чисел, приводящие к поведению, не соответствующему движку регулярных выражений Perl. Например, выражение "/\214748364/" приводило к переполнению вместо обработки как восьмеричное число "\214" с идущими следом символами "748364".
  • Исправлено неправильное поведение при использовании в шаблонах операции "\K".
  • В JIT возвращена оптимизация операций повторения символа.

Библиотека написана на Си и распространяется под свободной лицензией BSD. 

 

Последние материалы