在搜索字符串后获取一个符号并替换它

时间:2014-02-25 13:06:02

标签: regex notepad++

我正在网上搜索,但我找不到解决方案。我可能甚至不知道如何正确搜索,因为它很难定义在谷歌搜索的问题。

我有一个大约1750行的csv文件。

(my.csv),例如

123456-123456;1aaaa;1bbbb;12.1;1cccc;1dddd;123;123abc
123456-123457;2aaaa;2bbbb;12.1;2cccc;2dddd;456;123abc
123456-123458;3aaaa;3bbbb;12;3cccc;3dddd;789;123abc
123456-123459;4aaaa;4bbbb;1.0;4cccc;4dddd;123.0;123abc

目标: 我想要做的是选择; 之后,例如 .1 .0 或点之后的内容。

最后我想用0(零)填充它或用 0替换; ; 所以我得到

123456-123456;1aaaa;1bbbb;12.10;1cccc;1dddd;123;123abc
//............................^

123456-123459;4aaaa;4bbbb;1.00;4cccc;4dddd;123.00;123abc
//...........................^..................^

改掉: 我试过这个

(\.[0-9])(;)

但它选择 .3; (当然可以,但至少我几乎在正确的位置)

问题:有人可以帮助我使用正则表达式吗?

2 个答案:

答案 0 :(得分:2)

要将小数点后一位数的任何数字更改为两位数,请将(\.\d);替换为\10;。这仅适用于数字后跟分号。

要处理行尾或后跟分号的数字,请将(\.\d)(;|$)替换为\10\2。 (使用Notepad ++ 6.5.2测试)

如果你的问题是关于第四个字段的,那么用{10;`。

替换^([^;]*;[^;]*;[^;]*;[^.;]*\.\d);

答案 1 :(得分:2)

您可以在记事本++中替换所有后续正则表达式 找到:(0-9-a-zA-Z\;)*([.]){1}([0-9]){1}([;]){1}(0-9-a-zA-Z\;)* 替换为:\1\2\30\5

<强>说明: 因此,既然你想要保留并替换几个数字,我们要做的就是在你想要替换之前和之后找到文本,但是我们想要替换的东西只是我们能找到并锚定的一小部分。所以必须有五部分正则表达式。

第一部分和最后部分是所有数字,字母和分号

中间部分是:一个句点,后跟任意数字的数字,然后是一个分号

此处附带的工作示例的屏幕截图 enter image description here