split, $1 in Trenner auswerten?
am 29.06.2006 20:17:01 von Torsten Mohr
Hallo,
ich möchte einen String an einigen Stellen splitten, allerdings
zusätzlich auf einige Werte im Trenner zugreifen:
$s = "abcjkl";
Der String ist ein normaler Text, der mit zusätzlich
korrekte (müssen nicht gecheckt werden) HTML-Tags
enthält. "a" steht nur beispielhaft für einen Tag,
ich wollte den String nicht zu komplex werden lassen.
Ich möchte den Text in seine Einzelteile aufspalten und zu
den einzelnen Text-Teilen auswerten ob es sich um normalen
Text handelt (nicht zwischen ) oder um
einen Text zwischen . Für so einen Text
möchte ich "Typ" zwischenspeichern.
Ist sowas mit split() möglich? Oder einer anderen geschickten
Konstruktion?
GrüÃe,
Torsten.
Re: split, $1 in Trenner auswerten?
am 30.06.2006 09:58:01 von Christian Winter
Torsten Mohr schrieb:
> Hallo,
>
> ich möchte einen String an einigen Stellen splitten, allerdings
> zusätzlich auf einige Werte im Trenner zugreifen:
>
> $s = "abcjkl";
>
> Der String ist ein normaler Text, der mit zusätzlich
> korrekte (müssen nicht gecheckt werden) HTML-Tags
> enthält. "a" steht nur beispielhaft für einen Tag,
> ich wollte den String nicht zu komplex werden lassen.
>
>
> Ich möchte den Text in seine Einzelteile aufspalten und zu
> den einzelnen Text-Teilen auswerten ob es sich um normalen
> Text handelt (nicht zwischen ) oder um
> einen Text zwischen . Für so einen Text
> möchte ich "Typ" zwischenspeichern.
>
> Ist sowas mit split() möglich? Oder einer anderen geschickten
> Konstruktion?
Nur so aus der Hüfte geschossen:
my @typed = map { /(.+?) ? [ $2 => $1 ] : [ $_ => "NoA" ] }
split m#(?<=)|(?=
print "$_->[0] => $_->[1]$/" for( @typed );
Also zuerst an den Tag-Grenzen splitten, so dass die Rückgabeliste
nur den Plaintext oder den Tagtext mit umschlieÃenden Tags enthält,
dann im zweiten Schritt matchen ob ein Tag oder Plaintext vorliegt
und entsprechend Refs auf eine Liste mit "Text" => "TagTyp" als
Elemente zurückgeben.
-Christian