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

标签 python regex

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

相关文章:

python - Python中没有重复的排列

python - MongoAlchemy 文档通过 Flask-MongoAlchemy 编码为 JSON

java - 拆分由逗号分隔的字符串,而不考虑括号中的逗号

regex - 检查 R 中字符串是否为大写

regex - 使用正则表达式确定最佳拟合

javascript - 从字符串中删除一个单词,直到下一个出现空格为止

Python 查找两个字典是否具有相同的按值划分的键

jquery - 如何创建增量加载网页

python - 如何在Python脚本中更改外部命令的目标目录

用于检查字符串中至少 3 个插入符号的 Javascript 正则表达式