Regulärer Ausdruck in Array speichern
kai
- perl
Hallo,
folgende Problemstellung:
Ein vorgegebener String:
$string=' Produkt1 id="1234" Produkt1 id="9999" Produkt2 id="8888" usw..';
ist gegeben und nun möchte ich alle IDs des Produkt1 in ein Array speichern.
Hatte erst an Substitution gedacht, aber dieser liefert mir in diesem Fall nur die Anzahl: @array=$string=~s/(Produkt1 id" )(\d)/$2/g;
2.Möglichkeit wäre, alle Produkt1 Daten in einen seperaten String oder Datei zu schreiben und dann alle IDs zu filtern.
Hat von euch jmd eine "schickere" Lösung?
Danke im Vorraus
Ein vorgegebener String:
$string=' Produkt1 id="1234" Produkt1 id="9999" Produkt2 id="8888" usw..';
ist gegeben und nun möchte ich alle IDs des Produkt1 in ein Array speichern.
Hatte erst an Substitution gedacht, aber dieser liefert mir in diesem Fall nur die Anzahl:
@array=$string=~s/(Produkt1 id" )(\d)/$2/g;
-----------------------------------^^ ??
2.Möglichkeit wäre, alle Produkt1 Daten in einen seperaten String oder Datei zu schreiben und dann alle IDs zu filtern.
Hat von euch jmd eine "schickere" Lösung?
Du willst hier zwei Schritte in einem tun.
Ich denke aber ein bisschen anders...
my @products = qw(x y z);
my $parameter= qr/id|somepar/;
my %prodhash;
foreach my $product ( @products ){
while(
$string=~ s/*
($product) \s
($parameter)
" ([^"]+) "
/$3/gx ){
push @{ $prodhash{$1}{$2} }, $3;
}
}
mfg Beat
Danke für eure Antworten!
Habe es mittlerweile über 2 reg Ausdrücke gelöst:
@nummern=$string=~m/Produkt1 id="\d+/gs;
$i=0;
foreach (@nummern)
{
$nummern[$i]=~s/(Produkt1 id=")(\d+)/$2/g;
$i++;
}
Funktioniert auch ;)
hi,
Hat von euch jmd eine "schickere" Lösung?
split();
Hotti
Hat von euch jmd eine "schickere" Lösung?
split();
sleep 10000;
use verbose;
mfg Beat
Hat von euch jmd eine "schickere" Lösung?
split();sleep 10000;
use verbose;
Ok, wenns unbedingt sein muss: /x
Hotti