TRE (есептеу) - TRE (computing)

TRE
Түпнұсқа автор (лар)Вилл Лаурикари[1]
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанC
ТүріШамамен сәйкестік
Лицензия2-тармақ BSD тәрізді лицензия
Веб-сайтлаурикари.желі/ tre/

TRE болып табылады ашық көзі кітапхана үшін үлгілерді сәйкестендіру мәтінде,[2] сияқты жұмыс істейді тұрақты өрнек жасау мүмкіндігі бар қозғалтқыш жолдарды шамамен сәйкестендіру.[3] Оны Виль Лаурикари жасаған[1] және а астында таратылады 2-тармақ BSD тәрізді лицензия.

Кітапхана[4] ішінде жазылған C және енгізілген мәтін жолдары бойынша іздеу үшін тұрақты тіркестерді қолдануға мүмкіндік беретін функцияларды ұсынады. Басқа тұрақты экспрессиялық қозғалтқыштардан басты айырмашылығы - TRE мәтін фрагменттерін шамамен сәйкес келтіре алады, яғни мәтіннің бірнеше саны болуы мүмкін деп болжайды қате.

Ерекшеліктер

TRE қолданады кеңейтілген тұрақты өрнек алдындағы фрагментті жуықтап сәйкестендіруге арналған «бағыттарды» қосатын синтаксис. Осындай бағыттардың әрқайсысы осы фрагмент үшін қанша қате жіберуге болатындығын көрсетеді.

Шамамен сәйкестік[5] ұқсас тәсілмен орындалады Левенштейн қашықтығы бұл «танылған» типтегі үш тип бар екенін білдіреді:[6]

ТипоМысалДеректер
қосымша таңба енгізутәжірибеқосымша л, қосымша e
өрнектен кейіпкерді жіберіп алуреглар экспедициясыжоғалған сен, жоғалып кетті р
кейіпкерді ауыстыруреголярлық экспрессиясенo, сз

TRE анықтауға мүмкіндік береді құны әр типтегі үш қате үшін.

Жоба командалық жол утилитасымен бірге жүзеге асырылады agrep.

Шамамен сәйкестендіру кейбір синтаксистік кеңейтуді қажет етеді, бірақ бұл функция пайдаланылмаған кезде, TRE басқа тұрақты өрнектерге сәйкес келетін қозғалтқыштар сияқты жұмыс істейді. Бұл дегеніміз

  • ол қатаң сәйкестендіру үшін жазылған қарапайым тұрақты тіркестерді жүзеге асырады;[3][7]
  • таныс бағдарламашылар POSIX стилі тұрақты тіркестер[4] TRE-ді пайдалану үшін көп оқудың қажеті жоқ.[3]

Болжалды уақыт пен жадты тұтыну

Кітапхана авторы айтады[8] сәйкестендіруге кететін уақыт енгізілген мәтін ұзындығының өсуімен сызықты түрде өседі, ал сәйкестендіру кезінде жадының қажеттілігі тұрақты болады және енгізуге тәуелді емес, тек үлгіге байланысты.

Басқа

Кәдімгі экспресс-қозғалтқыштар үшін кең таралған басқа функцияларды тексеруге болады regex қозғалтқыштарын салыстыру кестелері немесе оның веб-парағындағы TRE мүмкіндіктерінің тізімінде.

Қолдану мысалы

Шамамен сәйкестендіру бағыттары бұйра жақшаларда көрсетілген және қайталанатын кванторлардан ерекшеленуі керек (мүмкін, жақшаны ашқаннан кейін бос орын салыңыз):

  • (тұрақты){~1}\с+(өрнек){~2} «тұрақты» бір сөзден көп емес, ал «өрнек» екеуден аспайтын «тұрақты өрнек» сөз тіркесінің нұсқаларына сәйкес келеді; қарапайым тұрақты тіркестердегі сияқты » s +«бір немесе бірнеше кеңістік таңбаларын білдіреді - яғни. рогулярлық экспрессия сынақтан өткен болар еді;
  • (өрнек) {5i + 3d + 2s <11} егер «қате» қатесінің жалпы құны 11-ден аз болса, енгізу құны 5-ке, өшіру 3-ке және таңбаның орнын 2-ге тең етіп орнатқан кезде «өрнек» сөзіне сәйкес келеді. экспрессон 10 құнын береді.

Тілді байланыстыру

C-ден басқа, TRE арқылы пайдалануға болады байланыстыру үшін Перл, Python және Хаскелл. [9] Бұл әдеттегі өрнектің қозғалтқышы R.[10] Алайда жоба болуы керек кросс-платформа, мақсатты платформалардың әрқайсысы үшін қажетті жеке интерфейс болар еді.

Кемшіліктері

Басқа тұрақты экспрессиялық қозғалтқыштар әдетте сәйкестендіру қабілетін қамтамасыз етпейтіндіктен, TRE-ді салыстыруға болатын бір мезгілде жүзеге асыру жоқ. Бағдарламашылардың келесі шығарылымдарда орындалуын көргісі келетін бірнеше нәрсе бар:[11]

  • сәйкес келетін мәтін фрагменттерін ауыстырудың ауыстыру механизмі (сияқты) Сед жолдық процессор және тұрақты өрнектердің көптеген заманауи енгізілімдері, соның ішінде кіріктірілген Перл немесе Java );
  • тағы бір жуықтау алгоритмін қолдану мүмкіндігі (қарағанда Левенштейндікі ) қате мәнін жақсы бағалау үшін (мысалы Soundex ) немесе, ең болмағанда, осы алгоритмді «своп» түріндегі қателіктерге жол беру үшін жақсарту қажет (қараңыз) Дамерау - Левенштейн арақашықтық ).

Сондай-ақ қараңыз

Пайдаланылған әдебиеттер

  1. ^ а б «R: шикі векторларға сәйкес үлгіні сәйкестендіру». MIT.edu.
  2. ^ «Windows үшін Tre».
  3. ^ а б c «Бұлыңғыр іздеуді tre-agrep көмегімен қолдану». Linux журналы.
  4. ^ а б «tre 0.8.0-6 (x86_64)». 7 шілде, 2020.
  5. ^ Андони, Александр; Кравтхамер, Роберт; Онак, Кзиштоф (2010). Редакторлау қашықтығы мен асимметриялық сұраныстың күрделілігі үшін полигарифмдік жуықтау. IEEE симптомы. Информатика негіздері (ТОБ). arXiv:1005.4033. Бибкод:2010arXiv1005.4033A. CiteSeerX  10.1.1.208.2079.
  6. ^ «TRE веб-парағы - Regex синтаксисі».
  7. ^ «Tre-agrep барлық grep функцияларына ие, сонымен қатар екіұшты немесе анық емес болуы мүмкін»
  8. ^ «TRE веб-парағы - туралы».
  9. ^ «TRE веб-парағы - жиі қойылатын сұрақтар».
  10. ^ «R-де қолданылған тұрақты тіркестер».
  11. ^ «Lookahead бар детерминделген ақырлы автоматтар». практикалық жетілдірулер .. Лурикари алгоритмі, атап айтқанда ..

Сыртқы сілтемелер

Әрі қарай оқу