[Bielefeld-pm] (kein Betreff)
Renee Bäcker
mailinglisten at renee-baecker.de
Mi Jul 29 00:48:44 PDT 2009
Kannst Du kurz erläutern, was die Fragestellung war?
Gruß,
Renée
c.duehl at gmx.de schrieb:
> Guten Morgen,
>
> ich hab versucht, Nils RE-Problem irgendwie nachzubauen, um eine Lösung zu basteln.
>
> Neben der mit den Doppelten REs (fangend / nicht fangend) von gestern, gäbe es noch die Möglichkeit, sich Stückchenweise vorzuarbeiten, oder aber den bisherigen Ausdruck zu nutzen und einen zweiten Test nachzulagern.
>
> So nach dem Motto
>
> if (my @treffer = m~schwierige RE~) {
> my $n = @treffer;
> if ($treffer[$n-1] eq $treffer[$n-3]) {
> # eigentliche Behandlung hier
> }
> }
>
>
>
> Ich komme allerdings gar nicht so weit. Vermutlich ist mein Beispiel nicht komplex genug. Ich poste es trotzdem mal:
>
>
> [code]
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> my $re_param =
> qr~[\w]+
> \s*
> =
> \s*
> ['"]?
> [^'"<>]+
> ['"]?
> \s*
> ~x;
>
> while (<DATA>) {
> chomp;
> print "zeile $.: $_\n";
> my @werte =
> m~<
> (ELEMENT|A)
> (?:
> \s+
> ((?:$re_param\s*)+)
> )?
> >
> (
> (?:
> (?!</\1>).
> )*
> )
> </\1>
> ~gx;
> for my $w (@werte) {
> print " ", (defined $w ? $w : '---'), "\n";
> }
> }
>
>
> __DATA__
> erste zeile <ELEMENT var1='wert1' var2="wert2">Inhalt</ELEMENT> mitte <A var3='wert3'><i>bla</i></A> Rest
> zweite zeile <ELEMENT var1='wert1' var2="wert2">Inhalt <i>irgendwelcher</i> Art</ELEMENT> Rest
> dritte zeile <ELEMENT var1='wert1'>Inhalt irgendwelcher Art</ELEMENT> Rest
> vierte zeile <ELEMENT var1=wert1>Inhalt irgendwelcher Art</ELEMENT> Rest
> fuenfte zeile <ELEMENT>Inhalt irgendwelcher Art</ELEMENT> Rest
> [/code]
>
> Ergebnis:
>
> [code]
> zeile 1: erste zeile <ELEMENT var1='wert1' var2="wert2">Inhalt</ELEMENT> mitte <A var3='wert3'><i>bla</i></A> Rest
> ELEMENT
> var1='wert1' var2="wert2"
> Inhalt
> A
> var3='wert3'
> <i>bla</i>
> zeile 2: zweite zeile <ELEMENT var1='wert1' var2="wert2">Inhalt <i>irgendwelcher</i> Art</ELEMENT> Rest
> ELEMENT
> var1='wert1' var2="wert2"
> Inhalt <i>irgendwelcher</i> Art
> zeile 3: dritte zeile <ELEMENT var1='wert1'>Inhalt irgendwelcher Art</ELEMENT> Rest
> ELEMENT
> var1='wert1'
> Inhalt irgendwelcher Art
> zeile 4: vierte zeile <ELEMENT var1=wert1>Inhalt irgendwelcher Art</ELEMENT> Rest
> ELEMENT
> var1=wert1
> Inhalt irgendwelcher Art
> zeile 5: fuenfte zeile <ELEMENT>Inhalt irgendwelcher Art</ELEMENT> Rest
> ELEMENT
> ---
> Inhalt irgendwelcher Art
> [/code]
>
> Gruß Christian
> _______________________________________________
> Bielefeld-pm mailing list
> Bielefeld-pm at pm.org
> http://mail.pm.org/mailman/listinfo/bielefeld-pm
>
>
--
Perl-Magazin: http://perl-magazin.de
Perl-Nachrichten: http://perl-nachrichten.de
Mehr Informationen über die Mailingliste Bielefeld-pm