使用正则表达式解析2以下格式(CSV文件)

时间:2013-04-22 11:52:16

标签: regex csv format

我有一个平面文件(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 |

我该如何纠正?

1 个答案:

答案 0 :(得分:0)

如果您正在使用的正则表达式允许两种外观,我认为这可能就足够了:

(?<=\d)(?: |\.)(?=\d)

然后用空字符串替换匹配可能就足够了 但是,如果您不能使用它们,您仍然可以使用

(\d)(?: |\.)(\d)

然后根据风格使用引用的组($1$2\1\2)。

修改
确保不更换日期:

(?<=\d)(?: |\.)(?=\d)(?=[ .\d]*,)

当您使用csv文件时,您的数据由|分隔,以便可以正常工作(因为我没有您的整个数据,我不确定)。