Regex 用于转换数字的正则表达式

Regex 用于转换数字的正则表达式,regex,csv,number-formatting,Regex,Csv,Number Formatting,我想将CSV文件内容转换成12.345,67或12 345,67numberformat12345,67。 我遵循了以下建议: 使用这样的正则表达式: (\d)(?: |\.)(\d) 然后我使用组$1$2作为结果 它工作正常,但也可以将组件(“Arome 12.233”修改为“Arome 12233”)。 只有当要转换的数字以“或|(CSV分隔符)开头时,我才能进行更改 示例: |12 546,123 | AROME 53.213 | 52 321,15 | 2.546,123 | ARO

我想将CSV文件内容转换成
12.345,67
12 345,67
numberformat
12345,67
。 我遵循了以下建议: 使用这样的正则表达式:

(\d)(?: |\.)(\d)
然后我使用组
$1$2
作为结果 它工作正常,但也可以将组件(
“Arome 12.233
”修改为“
Arome 12233
”)。 只有当要转换的数字以“
|
(CSV分隔符)开头时,我才能进行更改

示例:

|12 546,123 | AROME 53.213 | 52 321,15
|  2.546,123 | AROME 53 213 |152.321,15
预期结果:

|12546,123 | AROME 53.213 | 52321,15
|  2546,123 | AROME 53 213 |152321,15
搜索:
(?:[|])(\d+)[.](\d+)


并替换为:
$1$2

您可以尝试以下正则表达式:

((?:\|\s*|^)\d+)[ .](\d+)

我不擅长正则表达式,所以只需发表评论,但您可以将正则表达式用作\|\s*(\d)(?:|)(\d)\s*这将修改您现有的正则表达式,使其类似于:查找以|开头的字符串,可能是spae,然后是数字。但是在替换过程中,您可能需要添加\ |…请自己尝试一下:)。您使用的是什么语言?最简单的方法是首先拆分行,然后仅在结果的元素中搜索/替换您想更改的列表。该正则表达式很简单。@SumitGupta:我尝试了与您的建议类似的东西,但我没有足够的正则表达式知识来解释“应该以”“o”|开头”必须是一个数字,在给定行中可能会出现几个)@alan这个正则表达式我希望在Pentaho水壶转换中使用它,我希望在处理它之前避免拆分字段,因为转换是可实现的。谢谢你,我建议你把你的数据放到数据库里,然后用SQL正则表达式把所有数据都改成你想要的,留下你现在面临的100个问题:)。谢谢你的回答,但是你的代码也会改变注释,还有一个问题是删除一些分隔符“|”。嗨@Jerry,你能再帮我一次吗,因为我一直在使用你的正则表达式,而且它工作得很好。。。。几乎是因为我注意到你的表达式不适用于数字更大的als 999.999,99。你能告诉我,即使有几个(f.e.:1.000.000或12345 678,90),是否有办法移除1000个分离器(“空格”或“.”)Thanks@FredericRIsch你好很抱歉回复晚了,因为考试,我切断了网络。您知道您使用的正则表达式引擎是否支持
\G
\K
锚定?如果是,您可以尝试以下操作:
(?:\\s*\d+\G)\K[.](\d{3}(?=[^A-Z]+(?:\\\124;$))