2013-08-21 65 views
0

我收到了第三部分的文本文件,其中包含需要刪除的ID。該文件還包含許多其他我不需要的數據,但不是以分隔符或固定寬度格式。所以我想知道是否有一種方法使用記事本+ +和正則表達式來刪除除了我的ID號碼之外的所有內容? ID號的格式是,它們是8位長,並且必須以一個0記事本+ +刪除除8個字符的字符串包含數字以外的所有文本

實例開始:00000213,00023234,02456343

+0

什麼是更長的數字。它們應該被刪除,還是要保留8位數字? –

+0

可以刪除任何更長的數字......它們必須只有8個字符的數字長。 –

+0

您是否熟悉在N ++中使用正則表達式進行查找和替換?我認爲你是,但如果不是,我也可以很快地繼續。 – Michelle

回答

2

你想保留的數字,可以匹配這樣的:

(?<!\d)0\d{7}(?!\d) 

lookarounds確保你正好8個數字,而不是更多。

現在您可以簡單地匹配所有其他字符,直到您到達其中一個數字並刪除其他所有字符。此外,你需要考慮你後去除人物最後這些數字的情況下,一直到字符串的結尾:

.*?((?<!\d)0\d{7}(?!\d)|\Z) 

而且隨着$1\t替換寫回數,你不想刪除,並且在它後面添加一個標籤,以便在刪除所有內容後仍然可以區分它們(感謝Sniffer對於後面的建議)。開頭的?非常重要,以便儘可能少地匹配(如果後面還有另一個,則不要傳遞第一個數字)。確保激活dot matches newline選項。還請確保將Notepad ++更新至版本6.

+0

非常聰明的想法,值得+1,一個音符,他應該用'$ 1 \ t'來代替,以便在找到的數字之間保持選項卡,以便他可以隔離它們。 –

+0

@Sniffer好點 –

0
  1. 替換\D[ ]以除去非數字文本
  2. [ ]+替換爲[ ]以摺疊多餘的空格。現在你有每一串連續的數字,用空格分開。
  3. [ ]([^0]\d+|\d{1,7}|\d{8}\d+)[ ]替換爲[ ]以刪除不以0開頭的數字,長度爲1-7個字符或長度超過8個字符。

您可以使用任何你想要的分隔符;它不一定是[ ]。它可以是,,w,,基本上除了數字以外的任何東西都可以工作。

注意:爲清楚起見,空格編寫爲[ ],但這不是必需的。

相關問題