TRE (вычисления) - TRE (computing)

TRE
Оригинальный автор (ы)Вилле Лаурикари[1]
Репозиторий Отредактируйте это в Викиданных
Написано вC
ТипПриблизительное соответствие строк
ЛицензияBSD-подобная лицензия с двумя пунктами
Интернет сайтлаурикари.сеть/ tre/

TRE является Открытый исходный код библиотека за сопоставление с образцом в текст,[2] который работает как регулярное выражение двигатель с умением делать приблизительное соответствие строк.[3] Его разработал Вилле Лаурикари.[1] и распространяется под BSD-подобная лицензия с двумя пунктами.

Библиотека[4] написано в C и предоставляет функции, которые позволяют использовать регулярные выражения для поиска по строкам ввода текста. Основное отличие от других механизмов регулярных выражений заключается в том, что TRE может приближенно сопоставлять фрагменты текста, то есть предполагая, что текст может иметь некоторое количество опечатки.

Функции

TRE использует расширенное регулярное выражение синтаксис с добавлением «направлений» для приблизительного сопоставления предыдущего фрагмента. В каждом из таких указаний указано, сколько опечаток допустимо для этого фрагмента.

Примерное соответствие[5] выполняется аналогично Расстояние Левенштейна, что означает, что существует три типа "распознанных" опечаток:[6]

ОпечаткаПримерДанные
вставка лишнего символарегулярная экспрессиядополнительный л, дополнительный е
отсутствует символ в шаблонерегулярное выражениеотсутствующий ты, отсутствующий р
замена какого-либо персонажареголярное выражениетыо, sz

TRE позволяет указать Стоимость для каждого из трех типов опечаток независимо.

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

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

  • он реализует обычные регулярные выражения, написанные для строгого соответствия;[3][7]
  • программисты, знакомые с POSIX-стиль обычные выражения[4] не нужно много изучать, чтобы использовать TRE.[3]

Прогнозируемое потребление времени и памяти

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

Другой

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

Пример использования

Приблизительные направления соответствия указаны в фигурных скобках и должны отличаться от повторяющихся квантификаторов (возможно, с добавлением пробела после открывающей скобки):

  • (обычный){~1}\s+(выражение){~2} будет соответствовать вариантам фразы "регулярное выражение", в которых "регулярное" содержит не более одной опечатки, а "выражение" не более двух; как в обычных регулярных выражениях " s +"означает один или несколько пробелов, т. е. обычная экспрессия пройдет тест;
  • (выражение) {5i + 3d + 2s <11} будет соответствовать слову "выражение", если общая стоимость опечаток меньше 11, в то время как стоимость вставки установлена ​​на 5, удаление - на 3 и замена символа - на 2, т. е. экспрессон дает стоимость 10.

Языковые привязки

Помимо C, TRE можно использовать через привязки за Perl, Python и Haskell. [9] Это механизм регулярных выражений по умолчанию в р.[10] Однако если проект должен быть кросс-платформенный, потребуется отдельный интерфейс для каждой из целевых платформ.

Недостатки

Поскольку другие механизмы регулярных выражений обычно не обеспечивают возможности приблизительного сопоставления, практически не существует параллельной реализации, с которой можно было бы сравнить TRE. Однако есть несколько вещей, которые программисты могут пожелать реализовать в будущих выпусках:[11]

  • механизм замены для замены совпадающих фрагментов текста (как в sed строковый процессор и многие современные реализации регулярных выражений, в том числе встроенные в Perl или же Ява );
  • возможность использовать другой алгоритм приблизительного сопоставления (чем Левенштейна ) для лучшей оценки значения опечатки (например, Soundex ) или, по крайней мере, этот алгоритм нужно улучшить, чтобы допустить опечатки типа "своп" (см. Расстояние Дамерау – Левенштейна ).

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

Рекомендации

  1. ^ а б «R: сопоставление с образцом для исходных векторов». Массачусетский технологический институт.edu.
  2. ^ «Tre для Windows».
  3. ^ а б c "Использование нечеткого поиска с tre -gotip". Журнал Linux.
  4. ^ а б "tre 0.8.0-6 (x86_64)". 7 июля 2020.
  5. ^ Андони, Александр; Krauthgamer, Роберт; Онак, Кшиштоф (2010). Полилогарифмическое приближение для расстояния редактирования и асимметричной сложности запроса. IEEE Symp. Основы компьютерных наук (FOCS). arXiv:1005.4033. Bibcode:2010arXiv1005.4033A. CiteSeerX  10.1.1.208.2079.
  6. ^ "Веб-страница TRE - Синтаксис регулярных выражений".
  7. ^ «Tre -gotip имеет все функции grep, но также может делать неоднозначные или нечеткие»
  8. ^ "Веб-страница TRE - О компании".
  9. ^ "Интернет-страница TRE - FAQ".
  10. ^ «Регулярные выражения, используемые в R».
  11. ^ "Детерминированные конечные автоматы с метками и опережением просмотра". практические улучшения .. Алгоритм Лурикари, в частности ..

внешняя ссылка

дальнейшее чтение