2016-11-03 20 views
1

我使用正则表达式在记事本++,新版本在十一月后的时间2016正则表达式的任何非零数字

我的工作问题,在那里我有几十个文本文件包含工资和佣金的财务信息收益。我需要找到所有获得佣金的员工

文件格式是这样的。

emp001smithj20150000095000 

是去年没有佣金赚(17位,5个字符= “00000”)的一个例子

emp002jonest20151752545000 

是赚了,去年$ 17525佣金的例子(17位,5个字符= “17525”)

我试过...

^.{16}\b[1-9]{5}\b 

基本原理是,我想要从位置16开始的五个字符字边界中的任何非零数字,但没有运气。我明显错过了一些东西!

+0

你可以使用'^ {16} [1-9] \ d {4}'或'^。{16}(?!0 {5})\ d {5}',但这只会让你找到这些值。 –

+0

你如何确定每个员工都有五个字符的名字? –

+0

@ Casimir et Hippolyte其usernam。你的会是'hippoc',例如 – Nimbocrux

回答

2
^.{16}(?!00000) 

使用负的样子去寻找下一个五个字符不是00000

+0

优雅而有效。谢谢! – Nimbocrux

2

你不应该在这里使用单词边界,因为你的数字被其他数字包围。您将需要一个超前检查,您的5位数号码不是由唯一的数字,所以一个办法是:

^.{16}(?=0{0,4}[1-9])\d{5} 

你不应该尝试匹配[1-9]{5},这如将不匹配周围15000

相关问题