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

How to construct regex to identify dollar ($) money sum

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

示例:

Data:       What is should be:
S0.01    => [=10=].01
S1       => 
S400.05  => 0.05
[=10=],01    => [=10=].01
S0,SI    => [=10=].51

问题:是否可以构造一个正则表达式来搜索如此复杂的模式?

没那么复杂。从一个可以匹配 "pristine" 输出的正则表达式开始,比如

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

现在,只需将有问题的字符替换为其他字符即可。

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

这可能会给您带来误报,因为您会 "find" </code> 在像 "I read SI for baseball and basketball news" 这样的句子中(SI 是杂志 <i>体育画报</i>,但单独使用正则表达式是不可避免的。</p> <p>匹配完成后,<em>将结果</em>转换为假定的正确形式很简单:将任何初始 <code>S 替换为 $,任何,.,以及任何其他 S5