AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IP-Adressen mit RegEx auslesen

Ein Thema von TriphunEM · begonnen am 19. Jun 2006 · letzter Beitrag vom 19. Jun 2006
Antwort Antwort
TriphunEM

Registriert seit: 8. Jan 2004
147 Beiträge
 
#1

IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 19:51
Hallo,

ich möchte eine alle IP-Adresse+Port (xxx.xxx.xxx.xxxx) aus der Zwischenablage rausfiltern.
ich nutze dazu die RegExPr-Kompo, aber mein Code will nicht so richtig funktionieren.

Delphi-Quellcode:
var
  RegEx: TRegExpr;
begin
  if Clipboard.HasFormat(CF_Text) then begin
    RegEx := TRegExpr.Create();
    RegEx.Expression := '/([0-9]{1,3}\.){3}[0-9]{1,3}\:[0-9]{1,5}/';
    RegEx.InputString := Clipboard.AsText;
    if RegEx.Exec() then
    begin
      repeat
        memoProtocoll.Lines.Add(RegEx.Match[0] + ' - ' + RegEx.Match[1]);
      until not RegEx.ExecNext();
    end;
    RegEx.Free();
   end;
weiß jemand weiter? Ich bekomme keine Ausgabe!

Danke
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 20:04
Hallo TriphunEM,

ich weiss ja nicht was du da machen willst. Aber schau dir doch mal das an...

Delphi-Quellcode:
var RegEx: TRegExpr;
begin
  if Clipboard.HasFormat(CF_Text) then begin
    RegEx:=TRegExpr.Create;
    try
      RegEx.Expression := '([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})';
      if RegEx.Exec(Clipboard.AsText) then begin
        repeat
          memoProtocoll.Lines.Append(
            RegEx.Match[1] + ' - ' +
            RegEx.Match[2] + ' - ' +
            RegEx.Match[3] + ' - ' +
            RegEx.Match[4]
          );
        until not RegEx.ExecNext;
      end;
    finally
      RegEx.Free;
    end;
  end;
end;
MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#3

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 20:40
Delphi-Quellcode:
  // ...
  RegEx := TRegExpr.Create();
  RegEx.Expression := '[\d]{1,3}[\.]{1}[\d]{1,3}[\.]{1}[\d]{1,3}[\.]{1}[\d]{1,3}[\:]{1}[\d]{1,5}';
  RegEx.InputString := Clipboard.AsText;
  if RegEx.Exec() then
  begin
    repeat
      Memo1.Lines.Add(RegEx.Match[0]);
    until not RegEx.ExecNext();
  end;
  RegEx.Free();
end;

\d steht für Zahlen aber 0-9 würde auch funktionieren

du kannst dich doch vortasten mit den regulären ausdrücken,
nimm zuerst nur 3 zahlen zur prüfung und erweitere dann deinen regulären ausdruck bis du beim ergebnios angelangt bist.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 20:44
die korrekte regular expression wäre
/^0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$/ nachzulesen hier

  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#5

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 21:00
Ähm, das ist ja schön und gut, aber so kann das ja kein Mensch lesen... Vor allem steht da ein Code 4 mal da, 3 davon könnte man zusammenfassen.
Ich habe das ganze vor kurzem in PHP mit dem PCRE gelöst, vielleicht bringt dich das weiter:
Code:
#(25[0-5]|(2[0-4]|[01]?[0-9]?)[0-9]\.){3}(25[0-5]|(2[0-4]|[01]?[0-9]?)[0-9])#
Das gleiche könnte man normal auch mit der RegEx von den MSDNlern machen, allerdings finde ich die ausgeschriebenen Zahlen meistens schöner, vor allem, wenn es nicht soo lange RegEx's sind.
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 21:40
Da kontere ich und sage
Code:
#(?:25[0-5]|(?:2[0-4]|[01]?[0-9]?)[0-9]\.){3}(?:25[0-5]|(?:2[0-4]|[01]?[0-9]?)[0-9])#
Musst ja nicht wirklich alle einzelnen Zahlen speichern, oder? Die RegExp sollte dadurch schneller gehn, wenn du sie nachher analysieren willst kannst du sie immer noch an allen Punkten aufspalten, und zwar ohne Regex, geht normalerweise sowieso schneller

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#7

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 21:55
und wenn man dann noch eine Klammer hinzufügt, wird es noch "korrekter":
Code:
#(?:[color=#ff003f](?:[/color]25[0-5]|(?:2[0-4]|[01]?[0-9]?)[0-9][color=#ff003f])[/color]\.){3}(?:25[0-5]|(?:2[0-4]|[01]?[0-9]?)[0-9])#
btw: Tool zum "Erpröbeln" von RegExp's (basierend auf PCRE): ftp://ftp.bits-n.net/Tools/clueware/RegExTest.exe
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#8

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 22:48
Zitat von alcaeus:
Musst ja nicht wirklich alle einzelnen Zahlen speichern, oder? Die RegExp sollte dadurch schneller gehn, wenn du sie nachher analysieren willst kannst du sie immer noch an allen Punkten aufspalten, und zwar ohne Regex, geht normalerweise sowieso schneller
Jep, hast du absolut recht, aber auf jeden Fall war meine RegEx übersichtlicher.

*ergänzt*
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: IP-Adressen mit RegEx auslesen

  Alt 19. Jun 2006, 23:01
Mit "capturing groups":

Code:
'\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'
... und ohne:
Code:
'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'
In beiden Fällen werden 0.0.0.0 .. 255.255.255.255 erkannt. Quelle: RegexBuddy (Tool zum Erstellen und Testen von RegExes in verschiedenen Geschmacksrichtungen, ist seinen - hohen - Preis wert).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz