Jump to content

дикий коврик

дикий коврик
Разработчик(и) Насыщенная соль
Тип Сопоставление с образцом

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

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

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

[ редактировать ]

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

  • Звездочка ( * ) соответствует любой последовательности из нуля или более символов.
  • Вопросительный знак ( ? ), соответствующий любому отдельному символу.
  • Набор указанных символов. Он указывается как список символов или как диапазон символов, где начало и конец диапазона разделены знаком минус (или тире), или как любая комбинация списков и диапазонов. Тире также может быть включено в набор как символ, если оно является началом или концом набора. Этот набор заключен в квадратные скобки. Закрывающую квадратную скобку (]) можно использовать в наборе, если это первый символ в наборе.
  • Отрицание множества. Он указывается так же, как и набор, с добавлением символа каретки (^) в начале тестовой строки сразу внутри открытой квадратной скобки. (NNTP указывает альтернативу!. Реализация может быть настроена на любой вариант.)
  • Символ обратной косой черты ( \ ), делающий недействительным специальное значение открытой квадратной скобки ([), звездочки, обратной косой черты или вопросительного знака. Две последовательные обратные косые черты приведут к оценке обратной косой черты как символа, не имеющего особого значения.
  • *foo* соответствует строке, содержащей «foo».
  • mini* соответствует всему, что начинается с «mini» (включая саму строку «mini»).
  • ?* соответствует любой строке из трех и более букв.
  • [0-9a-zA-Z] соответствует каждому буквенно-цифровому символу ASCII .
  • [^]-] соответствует символу, отличному от закрывающей квадратной скобки или тире.

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

[ редактировать ]

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

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

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

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

См. также

[ редактировать ]
  1. ^ Зальц, Рич (25 июня 2019 г.). «wildmat: старый классический шаблон сопоставления шаблонов wildmat; общественное достояние» . Гитхаб . Проверено 25 ноября 2019 г.
  2. ^ Зальц, Рич (25 июня 2019 г.). "wildmat.c" . Гитхаб . Может оказаться ненадежным перед лицом неверных шаблонов; например, «foo[a-» может вызвать нарушение сегментации.
  3. ^ uwildmat(3) Linux функциям библиотеки Руководство по
  4. ^ «uwildmat.c в багажнике/библиотеке — INN» . inn.eyrie.org . Проверено 27 ноября 2019 г. .
  5. ^ "git/git: wildmatch.c" . Гитхаб . 16 февраля 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4d97429f7c87cdbfb83d67463387a04e__1644971100
URL1:https://arc.ask3.ru/arc/aa/4d/4e/4d97429f7c87cdbfb83d67463387a04e.html
Заголовок, (Title) документа по адресу, URL1:
wildmat - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)