Thread Regex Problemchen
(7 answers)
Opened by Heromaster at 2003-10-08 14:24
Bei mir läuft die Regex bis auf das beschriebene Problem auf Perl 5.6.1 unter Win32 reibungslos.
Ich bin gerade dabei ein BB-Code-Parser zu basteln. Beim [email]-code soll auf 2 Varianten in einer Regex geprüft werden. Der Tag kann also folgendermassen aussehen: 1. [email=meine@home.de]Meine Email[../email] oder 2. [email]meine@home.de[../email] Dadurch bin ich zu folgender Regex gekommen : $entry =~ s/(\[email\]|\[email=(.*)\])(.*)\[\/email\](?!\[\/email\])(?{ if(!defined($2) or $2 eq '') {$tmp = $3 }else{ $tmp = $2 } })/<a href=\"mailto:$tmp\">$3<\/a>/ig; Der fettmarkierte Teil ist der Code, der inerhalb der Regex ausgeführt wird und nicht korrekt funktioniert. Wie gesagt drehe ich die if-Bedingung um tritt bei $entry auch der umgekehrte Fall ein (siehe 1. Posting). Ich weiß, das ich das auch einfacher in zwei Regexen erledigen kann, da aber Perl mir das Feature anbietet, Perl-Code innerhalb einer Regex auszuführen, habe ich mich für diese Variante entschieden. Ich weiß, ich bin schlecht und werde dafür in der Hölle schmoren ;) Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
|