2009-05-11 5 views
1

Je voudrais utiliser la recherche & remplacer le dialogue dans UltraEdit (Perl Compatible Regular Expressions) pour mettre en forme une liste d'adresses IP dans un format standard.Format toutes les adresses IP à 3 chiffres

La liste contient:

192.168.1.1 
123.231.123.2 
23.44.193.21 

Il doit être formaté comme ceci:

192.168.001.001 
123.231.123.002 
023.044.193.021 

Le RegEx de http://www.regextester.com/regular+expression+examples.html pour IPv4 dans le PCRE-Format ne fonctionne pas correctement:

^(\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}$ 

Je suis coincé. Est-ce que quelqu'un a une bonne solution qui fonctionne dans UltraEdit?

Merci d'avance!

Répondre

3

Réglez le moteur d'expression régulière Perl (sur la section avancée) et remplacer:

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

avec ceci:

0$1 

deux fois. Ça devrait le faire.

0

Je ne sais pas comment vous pouvez utiliser des expressions régulières dans Remplacer par boîte à UltraEdit.

Vous pouvez utiliser cette expression régulière pour trouver votre chaîne:

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

Si votre entrée est une adresse IP unique (par ligne) et rien d'autre (aucun autre texte), cette approche fonctionnera:

I utilisé "Remplacer tout" avec le style des expressions régulières Perl:

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

il suffit de remplacer aussi souvent qu'il correspond. S'il y a un autre texte, les choses vont devenir plus compliquées. Peut-être que l'option "Rechercher dans la colonne" est utile ici, dans le cas où vous avez affaire à CSV.

+0

Je l'ai essayé avec Ultra-Edit v.14.20 et ça n'a pas marché pour moi. Une idée pourquoi? – Vadim

+0

Avez-vous passé aux expressions régulières "Perl" avant de l'essayer? – Tomalak

1

Si cela est juste des données ponctuelles travail de nettoyage, je souvent il suffit d'utiliser Calc Excel ou OpenOffice pour ce genre de chose:

  1. Ouvrez votre fichier texte et assurez-vous qu'une seule adresse IP par ligne.
  2. Ouvrez Excel ou autre et allez à "Données | Importer des données externes" et importez votre fichier texte en utilisant "." comme le séparateur.
  3. Vous devriez maintenant avoir 4 colonnes en Excel:

    192 | 168 | 1 | 1

  4. Faites un clic droit et mettre en forme chaque colonne comme un nombre à 3 chiffres et zéros à gauche.

  5. Dans la colonne 5, faites simplement une concaténation de chaîne des colonnes précédentes avec un "." entre chaque colonne: A1 & "." & B1 & "." & C1 & "." & D1

Ceci est évidemment une solution pas cher et sale et n'est pas une façon programmatique de faire face à cela, mais je trouve ce genre de technique utile pour le nettoyage des données de temps en temps.

+0

Hehe c'est exactement ce que j'ai fait avant d'ouvrir ce fil de discussion;) – Underlines

Questions connexes