2009-05-11 2 views
1

Я хотел бы использовать поиск & заменить диалог в UltraEdit (Perl Compatible Regular Expressions), чтобы отформатировать список IP-адресов в стандартный формат.Отформатируйте все IP-адреса на 3 цифры

Список содержит:

192.168.1.1 
123.231.123.2 
23.44.193.21 

Он должен быть отформатирован следующим образом:

192.168.001.001 
123.231.123.002 
023.044.193.021 

регулярное выражение из http://www.regextester.com/regular+expression+examples.html для IPv4 в PCRE-Format не работает должным образом:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$ 

Я застрял. У кого-нибудь есть правильное решение, которое работает в UltraEdit?

Заранее благодарен!

ответ

3

Установить движок регулярных выражений в Perl (на передовой части) и заменить это:

(?<!\d)(\d\d?)(?!\d) 

с этим:

0$1 

дважды. Это должно сделать это.

0

Я не уверен, как вы можете использовать регулярное выражение в поле «Заменить с помощью» в UltraEdit.

Вы можете использовать регулярное выражение, чтобы найти вашу строку:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$ 
1

Если вход одного IP-адреса (в строке) и больше ничего (нет другого текста), этот подход будет работать:

Я «заменить все» с стиле Perl регулярных выражений:

Replace (?<!\d)(?=\d\d?(?=[.\s]|$)) 
with 0 

Просто замените так часто, как это соответствует. Если есть другой текст, все будет усложняться. Возможно, опция «Поиск в столбце» полезна здесь, если вы имеете дело с CSV.

+0

Я попробовал его с Ultra-Edit v.14.20, и это не сработало для меня. Любая идея почему? – Vadim

+0

Вы перешли на «Perl» регулярные выражения, прежде чем попробовать? – Tomalak

1

Если это всего лишь один-офф данные уборки работу, я часто просто использовать Excel или OpenOffice Calc для этого типа вещи:

  1. Откройте текстовый файл и убедитесь, что только один IP-адрес в каждой строке.
  2. Открыть Excel или что угодно и перейти «Данные | Импорт внешних данных» и импортировать ваш текстовый файл, используя «.». как разделитель.
  3. Вы должны теперь иметь 4 колонки в excel:

    192 | 168 | 1 | 1

  4. Щелкните правой кнопкой мыши и отформатируйте каждый столбец как число с 3 цифрами и ведущими нулями.

  5. В столбце 5 просто выполните конкатенацию строк предыдущих столбцов с помощью «.». между каждой колонкой: A1 & "." & B1 & "." & C1 & "." & D1

Это, очевидно, является дешевой и грязной исправить и не программный способ борьбы с этим, но я нахожу этот вид техники полезно для очистки данных каждый сейчас и потом.

+0

Хе-хе это именно то, что я сделал, прежде чем я открыл этот вопрос.;) – Underlines