我有一个平面文件(CSV),其值由"|"
分隔,我想转换所有具有特定格式的数字“ 1 234 567,89 ”或“ 1.123.456,89 “进入” 1234567,89 “
为了做到这一点,我创建了这个正则表达式规则:
(\|\ *)([0-9]{0,3})(\.|\ )?([0-9]{3})?(\.|\ )?([0-9]{3})?(,)?([0-9]{0,3})(-| )?(\|)
这种方法很好,除非有2个数字是连续的,例如:
| 9 450,000 |**9 809 100,000** | 1 890,000 |UN |
我该如何纠正?
答案 0 :(得分:0)
如果您正在使用的正则表达式允许两种外观,我认为这可能就足够了:
(?<=\d)(?: |\.)(?=\d)
然后用空字符串替换匹配可能就足够了 但是,如果您不能使用它们,您仍然可以使用
(\d)(?: |\.)(\d)
然后根据风格使用引用的组($1$2
或\1\2
)。
修改强>
确保不更换日期:
(?<=\d)(?: |\.)(?=\d)(?=[ .\d]*,)
当您使用csv文件时,您的数据由|
分隔,以便可以正常工作(因为我没有您的整个数据,我不确定)。