2013-08-21 4 views
0

Я получил текстовый файл из третьей части, содержащий идентификаторы, которые мне нужно снять. Файл также содержит много других данных, которые мне не нужны, но не имеют формат с разделителями или фиксированной шириной. Поэтому мне было интересно, есть ли способ использовать Notepad ++ и regex для удаления всего, кроме идентификационных номеров? Формат идентификационных номеров в том, что они имеют длину 8 цифр и должны начинаться с 0.Notepad ++ удалить весь текст, кроме 8 символов, содержащих цифры

Примеры: 00000213, 00023234, 02456343

+0

Что с длинными номерами. Должны ли они быть удалены или вы хотите сохранить 8 своих цифр? –

+0

Любое большее число может быть также удалено ... они должны быть длинными только 8 символами. –

+0

Вы знакомы с использованием регулярных выражений в find-and-replace в 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

@ Отличная точка –

0
  1. Заменить \D с [ ] удалить нецифры тексту
  2. Замените [ ]+ на [ ], чтобы свернуть лишние пробелы. Теперь у вас есть каждая строка последовательных цифр, разделенных пробелами.
  3. Замените [ ]([^0]\d+|\d{1,7}|\d{8}\d+)[ ] на [ ], чтобы удалить номера, которые не начинаются с 0, длиной 1-7 символов или длиной более 8 символов.

Вы можете использовать любой разделитель, который вы хотите; это не должно быть [ ]. Это может быть ,, w, , в основном ничего, кроме цифры, будет работать.

Примечание: Пространства записаны как [ ] для наглядности, но это необязательно.

Смежные вопросы