Thread Regex Problemchen (7 answers)
Opened by Heromaster at 2003-10-08 14:24

Heromaster
 2003-10-08 14:24
#62136 #62136
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich versuche mich nun schon seit Stunden an einer Regex, aber ich bekomme es einfach nicht hin :(.

Code: (dl )
1
2
3
4
5
6
my $tmp;
$entry =~ s/(\[email\]|\[email=(.*)\])(.*)\[\/email\](?!\[\/email\])(?{ if(!defined($2) or $2 eq '') {$tmp = $3 }else{ $tmp = $2 } })/<a href=\"mailto:$tmp\">$3<\/a>/ig;
print "Ich bin 1 $1<br>";
print "Ich bin 2 $2<br>";
print "Ich bin 3 $3<br>";
print $tmp;


Wenn $entry == meine@home.de ist, bekomme ich also Ergebnis korrekt <a href="mailto:meine@home.de">meine@home.de</a>
Ist $entry allerdings Meine Email dann erscheint als Ergebnis <a href="mailto:">Meine Email</a>
Drehe ich die Bedingung im Code-Block der Regex um, also aus:
Code: (dl )
])(?{ if(!defined($2) or $2 eq '') {$tmp = $3; }else{ $tmp = $2; } })

wird
Code: (dl )
])(?{ if $2 ne '') {$tmp = $2; }else{ $tmp = $3; } })

dann ist die Ausgabe von $entry auch umgedreht.
Scheinbar wird der else-Zweig ignoriert, da  $2 & $3 korrekt sind. Oder sieht vielleicht jemand einen Fehler, den ich nicht sehe?\n\n

<!--EDIT|Heromaster|1065608764-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.

View full thread Regex Problemchen