Как найти положение подстроки в строке с нечетким соответствием

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

Например:

String: 9912, 1.What is your name?
Substring: 1. What is your name?
Tolerance: 1
Result: match on character 7

String: Where is our caat if any?
Substring: your cat
Tolerance: 2
Result: match on character 10

String: Tolerance is t0o h1gh.
Substring: Tolerance is too high;
Tolerance: 1
Result: no match

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

Алгоритм в Delphi будет предпочтительнее, но подойдет любая реализация или псевдологика.

8
задан MrLore 18 September 2014 в 02:07
поделиться