perl; regex

beate82

Grünschnabel
Hallo,
ich bin auf der Suche nach einem Regular Expression.
Die zu erkennende Zeile sieht so aus:
<img src="/img-tmp/protimg.d56.png" usemap="/img-tmp/protimg.d56.png"> Das Problem dabei ist, dass die regex so unspezifisch wie möglich sein muß. Mein Vorschlag dabei ist:
Code:
<img[^s]+src *= *"([^"]+)" +usemap *= *"protimg[^"]+">

Das ist auch grundsätzlich so richtig, nur irgendwie müsste noch dazugefügt werden, dass nach dem " noch n-Zeichen kommen dürfen bis das protimg kommt und dass dieses trotzdem noch gelesen wird.

Weiß da jemand weiter?
Danke
 
Das Zauberwort heißt HTML::parser (gibt's auf http://search.cpan.org )...
Code:
#! /usr/bin/perl

use strict;
use warnings;
use HTML::Parser;

my @infos;
my $p = HTML::Parser->new();
$p->handler(start => \&start_handler,"tagname,attr");
$p->parse_file('html.txt');

sub start_handler{
  return if(shift ne 'img');
  my $attributes = shift;
  my $src = $attributes->{src};
  my $usemap = $attributes->{usemap};
  push(@infos,[$src,$usemap]) if($usemap =~ /protimg/);
}
 

Neue Beiträge

Zurück