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

Heromaster
 2003-10-08 15:36
#62138 #62138
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
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.

View full thread Regex Problemchen