Нечеткие регулярные выражения

Я ищу способ сделать нечеткое сопоставление с использованием регулярных выражений. Я бы хотел использовать 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, COBPOBATIOH ЗАДЕРЖКИ / ABE.

На самом деле здесь говорится:

ПРЕИМУЩЕСТВЕННЫЙ ПРАВО НАЗНАЧЕНИЯ ДЛЯ АЛЛИС-ЧАЛМЕРС ПРОИЗВОДСТВЕННОЙ КОМПАНИИ, КОРПОРАЦИЯ ДЕЛАВЭРА

Что мне нужно сделать, так это извлечь фразу "ALUSCHALME & S MANOTAC / rURINGCOMPANY" и "ЗАДЕРЖКА" / ABE ". (Я понимаю, что это может показаться безумием. Но я оптимист.) В общем, шаблон будет выглядеть примерно так:

/ Assignor (, by mesne assignments,)? в (название компании), корпорацию (штат) / i

, где соответствие нечеткое.

28
задан pnuts 29 October 2015 в 06:42
поделиться