我有一个使用正则表达式从文本(格式 = mm-dd-yyyy)中提取日期的代码。
注意:文本是使用票据图像上的 OCR 获取的。因此,预期的日期格式为 mm-dd-yyyy,但它可以是使用 OCR 获得的任何随机文本。
import re
date_reg_exp = re.compile('\d{2}[-/.]\d{2}[-/.]\d{4}') #works for mm-dd-yyyy
matches_list=date_reg_exp.findall(test_str)
for match in matches_list2:
print match
如果我有一个字符串'这是从 OCR 09-11-2015 中提取的文本'
,上面的代码将起作用并产生日期作为输出'09-11-2015'
。但是,如果我有一个字符串 'This is o text extractud fram OCR 09-11-201 5'
或 'This is o text xtractud fram OCR 09-11-201'
或 'This is o text xtractud fram OCR O9-11-201'
它失败。如何为这种情况编写代码,它还可以选择最接近的匹配项。
最佳答案
有多种方法可以实现与正则表达式的近似匹配。最“理论上简单”的方法很可能需要您执行 edit-distance -像dynamic programming正则表达式 DFA 的计算.
这是一个相当棘手的编码算法,目前还没有太多的实现。最著名的是 Agrep (从技术上讲,agrep
工具实现了多种算法,但其中最著名的是模糊正则表达式匹配)。
通过此关键字进行简短的谷歌搜索会得到 this library ,它似乎有 Python 绑定(bind),并且可能正是您所需要的。
关于python - 如何获得正则表达式的最接近匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085616/