我正在研究发票解析器,发现了各种不同的货币格式。与其为每张发票重新实现一个特定的案例,我不希望有一个使用Regex替换的适用于所有案例的通用模式。
示例输入格式
2.578,20 2 354,20 234 234,256.20 234,205 246 548 244'056 26'155.25 12,20 13.33
所需的输出
2578.20 2354.20 234 234256.20 234205 246548 244056 26155.25 12.20 13.33
到目前为止,我的进度
到目前为止,我已经设法创建了几乎可以正常工作的东西/^(\d{0,3})?[\.\ ,']?(\d{0,3})([\.,](\d{0,2}))?/
和替换字符串$1$2.$4
但是这会产生输出
2578.20 2354.20 234. 234256.20 234205. 246548. 244056. 26155.25 . 1220. <---- WRONG 1333. <---- WRONG
我可以在最后加上一个点,因为它在PHP和其他语言中也适用于floatval()。但是最后两种情况是无效的。我知道它匹配最后的第一个
(\d{0,3})
模式而不是(\d{0,2})
模式。但是我对如何解决这个问题不知所措...
我正在研究发票解析器,发现了各种不同的货币格式。与其为每张发票重新实现一个特定的案例,我不希望有一种适用于所有发票的一般模式...
您可以使用[^\d\n](?!\d\d$)