Я ищу способ сделать нечеткое совпадение, используя регулярные выражения. Я бы хотел использовать Perl, но если кто-то может порекомендовать какой-либо способ сделать это, это будет полезно.
В качестве примера я хочу сопоставить строку со словами «НовыйЙорк »предшествует 2-значное число.Трудность возникает из-за того, что текст взят из OCR PDF, поэтому я хочу сделать нечеткое совпадение.Я хотел бы сопоставить:
12 New York
24 Hew York
33 New Yobk
и другие "близкие" совпадения (в смысле расстояния Левенштейна), но не:
aa New York
11 Detroit
Очевидно, мне потребуетсяукажите допустимое расстояние («нечеткость») для совпадения.
Насколько я понимаю, я не могу использовать для этого модуль Perl String::Approx
, потому что мне нужно включить обычныйвыражение в моем совпадении (чтобы соответствовать предыдущим цифрам).
Кроме того, я должен отметить, что это очень упрощенный пример того, что я действительно пытаюсь сопоставить, поэтому я не ищу грубуюСиловой подход.
Отредактировано, чтобы добавить:
Хорошо, мой первый пример был слишком прост.Я не хотел, чтобы люди зацикливались на предыдущих цифрах - извините за плохой пример.Вот лучший пример.Рассмотрим эту строку:
ASSIGNOR, BY MESHS ASSIGN1IBNTS, TO ALUSCHALME&S MANOTAC/rURINGCOMPANY, A COBPOBATlOH OF DELAY/ABE.
Что на самом деле это говорит:
ASSIGNOR, BY MESNE ASSIGNMENTS, TO ALLIS-CHALMERS MANUFACTURING COMPANY, A CORPORATION OF DELAWARE
Что мне нужно сделать, это извлечь фразу "ALUSCHALME & S MANOTAC / RURINGCOMPANY "и" DELAY / ABE ".(Я понимаю, что это может показаться безумием. Но я оптимист.) В общем, шаблон будет выглядеть примерно так:
/Assignor(, by mesne assignments,)? to (company name), a corporation of (state)/i
, где соответствие нечеткое.