例如,我想在一个由PDF的OCR生成的文本中匹配包含以两位数字开头的“纽约”单词的字符串。困难在于我想进行模糊匹配。我希望匹配:
12 New York
24 Hew York
33 New Yobk
还有其他“接近”匹配(按Levenshtein距离的意义),但不包括:
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
其中匹配是模糊的。
agrep
:http://www.tgries.de/agrep/ 检查它的许可证是否可以劫持和使用源代码。 - towi