Perl regulären Ausdruck, eine IP-Adresse

Schreibe ich diesen code, aber es funktioniert nicht.
Kann jemand darauf hin, das Problem?

sub match_ip()
{
  my $ip = "The IP address is 216.108.225.236:60099";
  if($ip =~ /(\d{1-3}\.\d{1-3}\.\d{1-3}\.\d{1-3}\:\d{1-5})/)
  {
      print "$1\n";
  }
}

BEARBEITEN:
Ich wollte nur extrahieren Sie die IP-Adresse, nicht an die Validierung.

  • Statt zu schreiben Ihre eigenen regex möchten Sie vielleicht zu prüfen, mit einem gut dokumentierten und getesteten module f.ex. Regexp::Common
  • Es gibt mehr als ein paar Probleme hier. Verwenden Sie eines der Module, oder schauen Sie auf all die Dinge, die Module tun, um es richtig zu machen. 🙂
  • Sind Sie versuchen, zu überprüfen oder einfach nur extrahieren Sie die IP-Adresse? Verursachen Sie einen schrecklichen job des ehemaligen.
  • Ich will nur extrahieren, nicht überprüfen
  • Gut, Sie will auch nicht zu extrahieren Dinge, die nicht sein können, IP-Adressen, so dass die Validierung, die ist extrem einfach zu tun, hilft bei der Reduzierung der false-positives.
  • Die Sache ist die, nur für die überprüfung, ich möchte nicht, dass meine script-abhängig von einem beliebigen Modul. Ich gehe davon aus, dass nur gültige IP-Adresse in der Datei die ich bin-Verarbeitung.

InformationsquelleAutor cppcoder | 2012-04-15
Schreibe einen Kommentar