invoice2data正则提取发票金额丢失小数位的原因问询
提取异常的原因
1. invoice2data内置数值解析规则不匹配当前发票的数值格式
你当前提取的发票数值采用空格作为千位分隔符、逗号作为小数分隔符的欧洲地区数值格式,而invoice2data默认使用英语区数值解析逻辑:默认将.识别为小数分隔符,将,识别为千位分隔符,同时会自动清理数值中的空白字符。
原始提取到的文本1 189,89经过默认规则处理时,首先会删除空格得到1189,89,之后逗号会被作为千位分隔符直接移除,最终转换为浮点数后就得到了118989.0的错误结果。
2. 正则表达式写法存在匹配隐患
你使用的正则Total \/ Brutto\s*(?:.*?\b(\d{1,3}(?:\s\d{3})*,\d{1,2})\b){2}中,{2}量词作用在包含捕获组的非捕获组上,正则重复执行捕获组时只会保留最后一次匹配到的内容,不会保留多次匹配结果,容易出现误抓其他列数值的问题,无法稳定匹配到目标列的数值。
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

