2016-11-03 19 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

相關問題