RegexRenamer,如何在匹配后添加前导零?

问题描述 投票:0回答:1

我有数百个名称类型为“xx S1E1 y1”、“xx S2E15 y2”、“xx S3E100 y3”的文件。

使用 RegexRenamer,我尝试在 E 之后添加前导零,但我无法这样做,它总是将前导零放在 E 之前。

(我需要 E1 变为 E001,E10 变为 E010,并且对 E100 不执行任何操作。)

例如对于那些“xx S1E[1-9] xx”的文件名,我正在尝试:

匹配:(E\d{1}) 替换:0$0

这导致 S1E1 变成 S10E1 而不是 S1E01。

有人知道如何使用 RegexRenamer 正确执行此操作吗?

c# regex regex-replace
1个回答
3
投票

尝试这个正则表达式

(?<=E)((?=\d(?!\d))|\d(?!\d\d))

并替换为

0$0

不确定 RegexRenamer 是否支持条件替换,但这里有一个解决方法。诀窍是,当

E
之后只有一位数字时,它会匹配两次(
E
之后的零宽度字符以及后面的数字)。所以它可以插入两个
0

E
后面有两位数字时,只匹配一次(其后面的数字),并且只插入一个
0

如果超过 2 位数字,则不匹配任何内容。

参见测试用例

© www.soinside.com 2019 - 2024. All rights reserved.