[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