TRE (вычисления) - TRE (computing)
| Оригинальный автор (ы) | Вилле Лаурикари[1] | 
|---|---|
| Репозиторий |   | 
| Написано в | C | 
| Тип | Приблизительное соответствие строк | 
| Лицензия | BSD-подобная лицензия с двумя пунктами | 
| Интернет сайт | лаурикари | 
TRE является Открытый исходный код библиотека за сопоставление с образцом в текст,[2] который работает как регулярное выражение двигатель с умением делать приблизительное соответствие строк.[3] Его разработал Вилле Лаурикари.[1] и распространяется под BSD-подобная лицензия с двумя пунктами.
Библиотека[4] написано в C и предоставляет функции, которые позволяют использовать регулярные выражения для поиска по строкам ввода текста. Основное отличие от других механизмов регулярных выражений заключается в том, что TRE может приближенно сопоставлять фрагменты текста, то есть предполагая, что текст может иметь некоторое количество опечатки.
Функции
TRE использует расширенное регулярное выражение синтаксис с добавлением «направлений» для приблизительного сопоставления предыдущего фрагмента. В каждом из таких указаний указано, сколько опечаток допустимо для этого фрагмента.
Примерное соответствие[5] выполняется аналогично Расстояние Левенштейна, что означает, что существует три типа "распознанных" опечаток:[6]
| Опечатка | Пример | Данные | 
|---|---|---|
| вставка лишнего символа | регулярная экспрессия | дополнительный л, дополнительный е | 
| отсутствует символ в шаблоне | регулярное выражение | отсутствующий ты, отсутствующий р | 
| замена какого-либо персонажа | реголярное выражение | ты → о, s → z | 
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 ) или, по крайней мере, этот алгоритм нужно улучшить, чтобы допустить опечатки типа "своп" (см. Расстояние Дамерау – Левенштейна ).
 
Смотрите также
Рекомендации
- ^ «Tre для Windows».
 - ^ а б c "Использование нечеткого поиска с tre -gotip". Журнал Linux.
 - ^ а б "tre 0.8.0-6 (x86_64)". 7 июля 2020.
 - ^ Андони, Александр; Krauthgamer, Роберт; Онак, Кшиштоф (2010). Полилогарифмическое приближение для расстояния редактирования и асимметричной сложности запроса. IEEE Symp. Основы компьютерных наук (FOCS). arXiv:1005.4033. Bibcode:2010arXiv1005.4033A. CiteSeerX 10.1.1.208.2079.
 - ^ "Веб-страница TRE - Синтаксис регулярных выражений".
 - ^ «Tre -gotip имеет все функции grep, но также может делать неоднозначные или нечеткие»
 - ^ "Веб-страница TRE - О компании".
 - ^ "Интернет-страница TRE - FAQ".
 - ^ «Регулярные выражения, используемые в R».
 - ^ "Детерминированные конечные автоматы с метками и опережением просмотра". 
практические улучшения .. Алгоритм Лурикари, в частности ..
 
внешняя ссылка
дальнейшее чтение
- Наварро, Гонсало (март 2001 г.), «Экскурсия по приблизительному сопоставлению строк», Опросы ACM Computing, 33 (1): 31–88, CiteSeerX 10.1.1.452.6317, Дои:10.1145/375360.375365, S2CID 207551224