2014-09-02 43 views
1

代替我需要更换像这样的列表:记事本++正则表达式与ZEROFILL

105164 25 
105164 26 
105164 29 
105496 1 
105496 2 

105164_0025 
105164_0026 
105164_0029 
105496_0001 
105496_0002 

(\w)([0-9]+)_$1但如何做到左零填充的东西吗?

+0

单个正则表达式不能做到这一点。也许Notepad ++有一个选项来右对齐列?然后你可以使用正则表达式来填充数字而不是空格。 – 2014-09-02 13:26:41

+0

你说的是一种不规则的语言,不能用正则表达式来表达。 – HuStmpHrrr 2014-09-02 13:29:27

回答

5
[ ]([0-9]+) to _$1 --do your first replace 
_([0-9])$ to _000$1 
_([0-9][0-9])$ to _00$1 
_([0-9][0-9][0-9])$ to _0$1 

种类的作弊方法,但这是我能想到的唯一方法。

+0

尼斯编辑。我会使用没有方括号的“”,但它使得它在堆栈溢出时更具可读性。 – beiller 2014-09-02 13:29:26

+0

_([0-9])$到'_000 $ 1'(下划线) – DanFromGermany 2014-09-02 13:31:15

+0

固定。你也可以通过3次替换来完成这项工作,将它们结合在一起。另外我想知道它是否可能使用OR(|) – beiller 2014-09-02 13:32:10

3

可以分两次做:

第一关:
查找内容:_0000$1

第二关::
查找内容:_0*(\d{4})$
更换(\d+)$
与更换与:_$1

+0

好主意!只有空格仍然存在,或者应该在'[](\ d +)$'中有一个空格,并且它被截断:D – 2014-09-02 14:56:53

+1

@ Jonny5:空格在这里,但在'(\ d +)' – Toto 2014-09-02 15:01:11