0

我试图用正则表达式的 EditPlus 替换,这些值包含逗号分隔的数字和两个小数点,所以它们有 3 个小数点,在末尾添加一个零。但我的尝试最终删除了组的值,而不是在末尾添加零。文本来自 csv 文件,制表符分隔,超过 12000 行。

要替换的文本(仅示例):

Car 48,589  27,56   NULL    NULL
Bike    NULL    12,258  NULL    45,896
Bus NULL    11,23   NULL    85,25
Truck   23,45   NULL    45,458  NULL
Boat    45,89   74,12   NULL    NULL

查找正则表达式字符串:

(\t[0-9]{2},[0-9]{2})([^0-9]|$)

替换正则表达式字符串尝试:

1. $10$2   // delete String Group 1
2. $1\0$2  // make a copy of group 1 until the end

预期结果是:

Car 48,589  27,560  NULL    NULL
Bike    NULL    12,258  NULL    45,896
Bus NULL    11,230  NULL    85,250
Truck   23,450  NULL    45,458  NULL
Boat    45,890  74,120  NULL    NULL
4

1 回答 1

1

问题是表达式 \10 并不表示 \1(第一个 fount 实例)和 0。它表示找到的实例编号为 10。

您可以分两步进行替换:添加一些不在您文件中的占位符符号,例如 @@@@@

在此处输入图像描述

并在第二步中将占位符替换为 0

在此处输入图像描述

结果是:

在此处输入图像描述

需要 \2 才能正确处理行尾的数字,例如第 3 行。

于 2017-12-05T16:19:11.067 回答