-1

我有一批带有模式的文件

AB 001 CD.txt
AB 002 FG.txt
AB 003 ID.txt ...

其中前 2 个字符是恒定的,而后 2 个字符都是不同的。

我想保持第一个和最后两个字符不变,只需将中间的数字更改为(xxx + 2)。

AB 001 CD.txt -> AB 003 DC.txt
AB 002 FG.txt -> AB 004 FG.txt

我是正则表达式的新手,所以到目前为止我能做的最好的就是找到带有 [0-9] 的数字,但我需要替换模式。

请注意,我只是尝试使用名为“RegExr”的应用程序来测试它以找到替换匹配项。不确定这对正则表达式是否可行。

4

2 回答 2

1

要匹配文件名,您可以使用以下正则表达式:

^AB (\d{3}) .*$

但是,您不能仅用正则表达式替换数字部分。您必须使用为您正在使用的语言指定的一些功能。

从现在开始,您必须获得第一个匹配的组,将其转换为整数,增加 2,在 value 的左侧添加缺失的零并替换为第一个组中提到的这个字符串。

于 2013-01-18T11:41:51.240 回答
0

这对于正则表达式来说真的不是一个好工作——你不能用正则表达式来计算。因此,数值操作受到严重限制。恐怕正则表达式不适合这项工作。但是,您可以做的是使用回调(取决于您使用的语言),类似于以下内容(伪代码,取决于您使用的语言):

result = regex_replace_callback('^(\w\w) (\d+) (\w\w).txt)$',
                                increment_match,
                                your_string)

function increment_match(match):
    return match[1] + " " + (int(match[2]) + 2) + " " + match[3]
于 2013-01-18T11:42:27.370 回答