stringtranslate.com

wildmat

wildmat — это библиотека сопоставления шаблонов, разработанная Ричем Сальцем . Основанная на синтаксисе подстановочных знаков, который уже использовался в оболочке Bourne , wildmat обеспечивает единый механизм сопоставления шаблонов в приложениях с более простым синтаксисом, чем тот, который обычно предлагают регулярные выражения . Шаблоны неявно прикрепляются в начале и конце каждой строки при проверке на соответствие.

В июне 2019 года Рич Сальц опубликовал оригинальную версию ныне несуществующей библиотеки на GitHub в рамках передачи в общественное достояние . [1]

Операции сопоставления с образцом

Помимо строгого однозначного соответствия между шаблоном и источником, проверяемым на совпадение, существует пять операций сопоставления с образцом.

Примеры

Использование

wildmat чаще всего встречается в реализациях NNTP , таких как собственный INN Зальца , а также в неродственном программном обеспечении, таком как GNU tar и Transmission . GNU tar заменил wildmat на POSIX fnmatch glob matcher в сентябре 1992 года. Ранняя версия содержала потенциальный доступ за пределы диапазона для незакрытых [ . [2]

Исходная реализация wildmat, ориентированная на байты, не может обрабатывать многобайтовые наборы символов и создает проблемы, когда искомый текст может содержать несколько несовместимых наборов символов. Упрощенная версия wildmat, ориентированная на кодировку UTF-8, была разработана рабочей группой IETF NNTP. Она является частью RFC  3977 (раздел 4), стандарта 2006 года для NNTP.

В новой версии INN, которая поддерживает UTF-8, был добавлен "uwildmat", который поддерживает все возможности wildmat. Эта переделка 2000 года, выполненная Рассом Олбери, исправляет OOB в исходной реализации. Плотно закрученные циклы C были записаны в меньшие операторы. [3] [4]

Rsync включает в себя потомка wildmat с лицензией GPLv3, известного как wildmatch, модифицированного Уэйном Дэвисоном. Система контроля версий Git импортирует и использует его. Он не поддерживает UTF-8, но имеет фиксированный OOB и дополнительную поддержку для классов символов и звездных глобусов (** для произвольной глубины). [5]

Смотрите также

Ссылки

  1. ^ Salz, Rich (25 июня 2019 г.). "wildmat: старинный классический сопоставитель шаблонов wildmat; общественное достояние". GitHub . Получено 25 ноября 2019 г. .
  2. ^ Salz, Rich (25 июня 2019 г.). "wildmat.c". GitHub . Может оказаться ненадёжным при наличии неправильно сформированных шаблонов; например, "foo[a-" может вызвать нарушение сегментации.
  3. ^ uwildmat(3)  –  Руководство по функциям библиотеки Linux
  4. ^ "uwildmat.c в trunk/lib – INN". inn.eyrie.org . Получено 27 ноября 2019 г. .
  5. ^ "git/git: wildmatch.c". GitHub . 16 февраля 2022 г.

Внешние ссылки