2009-05-11 4 views
1

Ich möchte die Suche verwenden & ersetzen Sie den Dialog in UltraEdit (Perl Compatible Regular Expressions), um eine Liste von IP-Adressen in ein Standardformat zu formatieren.Formatieren Sie alle IP-Adressen zu 3 Ziffern

Die Liste enthält:

192.168.1.1 
123.231.123.2 
23.44.193.21 

Es sollte wie folgt formatiert werden:

192.168.001.001 
123.231.123.002 
023.044.193.021 

Die RegEx von http://www.regextester.com/regular+expression+examples.html für IPv4 in der PCRE-Format funktioniert nicht richtig:

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

Ich bin stecken geblieben. Hat jemand eine richtige Lösung, die in UltraEdit funktioniert?

Vielen Dank im Voraus!

Antwort

3

Stellen Sie den Modul für reguläre Ausdrücke zu Perl (auf dem erweiterten Abschnitt) und diese ersetzen:

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

mit diesem:

0$1 

zweimal. Das sollte es tun.

0

Ich bin mir nicht sicher, wie Sie Regulären Ausdruck in Ersetzen durch in UltraEdit verwenden können.

können Sie diesen regulären Ausdruck verwenden Zeichenfolge zu finden:

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

Wenn Sie Ihre Eingabe eine einzelne IP-Adresse (pro Zeile) und nichts anderes ist (kein anderer Text), wird dieser Ansatz funktionieren:

habe ich mit Perl-Stil „Alle ersetzen“ Ausdrücke regular:

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

wie oft ersetzen, wie es passt. Wenn es einen anderen Text gibt, werden die Dinge komplizierter. Vielleicht ist die Option "In Spalte suchen" hilfreich, wenn Sie mit CSV arbeiten.

+0

Ich versuchte es mit Ultra-Edit v.14.20 und es hat nicht für mich funktioniert. Irgendeine Idee warum? – Vadim

+0

Haben Sie vor dem Ausprobieren zu regulären Perl-Ausdrücken gewechselt? – Tomalak

1

Ist dies nur ein einmaliges Daten Job Reinigung, habe ich oft verwende nur Excel oder Openoffice Calc für diese Art der Sache:

  1. Ihre Text-Datei öffnen und die Adresse sicher, dass nur eine IP pro Zeile machen.
  2. Öffnen Sie Excel oder was auch immer und gehen Sie auf "Daten | Externe Daten importieren" und importieren Sie Ihre Textdatei mit "." als Trennzeichen.
  3. Sie sollten jetzt 4 Spalten in Excel haben:

    192 | 168 | 1 | 1

  4. Klicken Sie mit der rechten Maustaste und formatieren Sie jede Spalte als Zahl mit 3 Ziffern und führenden Nullen.

  5. In Spalte 5 nur eine String-Verkettung der vorherigen Spalten mit einem "." zwischen jeder Spalte: A1 & "." & B1 & "." & C1 & "." & D1

Dies ist offensichtlich ein billiges und schmutzige fix und ist keine programmatische Art und Weise des Umgangs mit dieser, aber ich finde diese Art von Technik nützlich für die Daten hin Reinigung und dann.

+0

Hehe, das ist genau das, was ich getan habe, bevor ich diesen Fragefaden geöffnet habe;) – Underlines