Отформатировать все IP-адреса в 3 цифры - PullRequest
1 голос
/ 11 мая 2009

Я бы хотел использовать диалог поиска и замены в UltraEdit (Perl-совместимые регулярные выражения) для форматирования списка IP-адресов в стандартный формат.

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

192.168.1.1  
123.231.123.2  
23.44.193.21  

Это должно быть отформатировано так:

192.168.001.001  
123.231.123.002  
023.044.193.021 

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

^(\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?

Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 11 мая 2009

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

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

с этим:

0$1

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

1 голос
/ 11 мая 2009

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

Я использовал «Replace All» с регулярными выражениями в стиле Perl:

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

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

1 голос
/ 11 мая 2009

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

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

    192 | 168 | 1 | 1

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

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

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

0 голосов
/ 11 мая 2009

Я не уверен, как вы можете использовать регулярные выражения в поле «Заменить на» в 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])$
...