regexp: Matches aus SuchString in Array
regexp: Matches aus SuchString in Array
am 14.01.2007 22:42:17 von Oliver Meister
Guten Tag miteinander
Ich stehe "etwas" am Berg und möchte um Hilfe ersuchen. Es geht darum,
dass ich mehrere Matches aus einem String habe, aber diese nicht
verarbeiten kann.
Mein String $body hat etwa folgenden Inhalt:
$body =3D
" lorem ipsum hallaa filename=3D\"itsme.txt\" more bla an ipsum dolores
filename=3D\"itsagainme.pdf\" more text all over" ;
Aus dem String "$body" will ich die Dateinamen extrahieren:
- itsme.txt
- itsagainme.pdf.
Dies gelingt mit
- ($left, $right) =3D $body =3D~ /(filename=3D"(.*?)")/;
- print $right;
Hier erhalte ich *natürlich* nur den jeweils letzten Dateinamen aus
"$body".
Mein Problem ist nun, dass ich noch nicht durchschaut habe, wie ich die
Dateinamen in ein Array bekomme.
Das Ergebnis sollte also etwa so aussehen:
$right[0] hat den Wert: itsme.txt
$right[1] hat den Wert: itsmeagain.pdf
Wie kann ich meine RegExp-Ergebnisse in Array packen?
Grüsse
Oliver
Re: regexp: Matches aus SuchString in Array
am 14.01.2007 22:51:14 von Bjoern Hoehrmann
* Oliver Meister wrote in de.comp.lang.perl.misc:
>Ich stehe "etwas" am Berg und möchte um Hilfe ersuchen. Es geht darum,
>dass ich mehrere Matches aus einem String habe, aber diese nicht
>verarbeiten kann.
>
>Mein String $body hat etwa folgenden Inhalt:
>$body =
>" lorem ipsum hallaa filename=\"itsme.txt\" more bla an ipsum dolores
>filename=\"itsagainme.pdf\" more text all over" ;
>
>Aus dem String "$body" will ich die Dateinamen extrahieren:
>- itsme.txt
>- itsagainme.pdf.
my @filenames = $body =~ /filename="([^"]*)"/g;
Mehr zu /g unter `perldoc perlre`.
--
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/
Re: regexp: Matches aus SuchString in Array
am 14.01.2007 23:05:48 von Mirco Wahab
Oliver Meister wrote:
> Aus dem String "$body" will ich die Dateinamen extrahieren:
> - itsme.txt
> - itsagainme.pdf.
>
> Dies gelingt mit
> - ($left, $right) = $body =~ /(filename="(.*?)")/;
> - print $right;
Eine Variante ist die von Björn, eine
Andere käme ohne $1 etc aus:
my $body =q'
lorem ipsum hallaa filename="itsme.txt" more bla an ipsum dolores
filename="itsagainme.pdf" more text all over
';
my ($left, $right) = $body =~ /(?<==")[^"]+/g;
....
Viele Grüße
M.
Re: regexp: Matches aus SuchString in Array
am 16.01.2007 16:27:57 von Oliver Meister
Mirco Wahab schrieb:
> Oliver Meister wrote:
> > Aus dem String "$body" will ich die Dateinamen extrahieren:
> > - itsme.txt
> > - itsagainme.pdf.
> >
> > Dies gelingt mit
> > - ($left, $right) =3D $body =3D~ /(filename=3D"(.*?)")/;
> > - print $right;
>
> Eine Variante ist die von Björn, eine
> Andere käme ohne $1 etc aus:
>
> my $body =3Dq'
> lorem ipsum hallaa filename=3D"itsme.txt" more bla an ipsum dolores
> filename=3D"itsagainme.pdf" more text all over
> ';
>
> my ($left, $right) =3D $body =3D~ /(?<==")[^"]+/g;
>
> ...
>
> Viele Grüße
>=20
> M.
Vielen Dank für Eure Hilfe, Björn und Mirco...
Oliver