Skip to main content
 首页 » 编程设计

python之如何获得正则表达式的最近匹配

2024年10月24日27findumars

我有一个使用正则表达式从文本 (format = 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 

如果我有一个字符串 'This is a text extracted from 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),可能正是您所需要的。