如何构造正则表达式以识别美元($)金额

时间:2018-09-07 14:50:30

标签: python regex dollar-sign

我正在尝试创建一个可识别金额(以美元为单位)的正则表达式。 问题是数据是由OCR在扫描的PDF文件上生成的,因此数据不精确:

  • $可以由S
  • 表示
  • .可以由,
  • 表示
  • 1可以由lI
  • 表示
  • 5可以由S
  • 表示

示例:

Data:       What is should be:
S0.01    => $0.01
S1       => $1
S400.05  => $400.05
$0,01    => $0.01
S0,SI    => $0.51

问题:是否可以构建可以搜索这种复杂模式的正则表达式?

1 个答案:

答案 0 :(得分:4)

没有那么复杂。从可以匹配“原始”输出的正则表达式开始,例如

\$[0-9]+(\.[0-9]{2})?

现在,只需将可疑字符替换为其他字符即可。

[$S][0-9SIl]+([.,][0-9SIl]{2})?

这可能会给您带来误报,因为您会在“我读棒球和篮球新闻的SI”这样的句子中“找到” $1(SI是《体育画报》的缩写,但是仅使用正则表达式是不可避免的。

完成匹配后,将结果转换为假定的正确形式很简单:将任何初始的S替换为$,将任何,替换为{ .和其他S5