LINUX.ORG.RU

PCRE2 10.45

 , , , ,

PCRE2 10.45

3

2

После более полугода разработки, состоялся выпуск 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().
  • Другие улучшения и исправления ошибок.

>>> Подробности на GitHub

★★★★★

Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 4)

\b(\w++)(*scan_substring:(1).+rh) находит слово, содержащее редкую в английском языке последовательность букв «rh», находящуюся не в самом начале.

Я далёк от PCRE, но в Sam (1, 2, 3) это делается намного проще: x/[a-zA-Z]+/ g/.rh/. Если описать словами, то «цикл по [a-zA-Z]+, затем для каждого элемента if содержит ‘.rh’».

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от gns

В TRE, кстати, тоже новый сопровождающий. :)
А вот нечёткий поиск я бы добавил в Oniguruma, думаю об этом. :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от kaldeon

 \b(\w++)(*scan_substring:(1).+rh)

Не понял, зачем такая сложная конструкция, когда это простая задача для традиционной регулярки.

rmu ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.