Hab hier einen einfachen BBCode-Regex.
my @allowedTags = ('b', 'i');
for (@allowedTags) {
$text =~ s{
[$](.+?)[$]
} {
replace($_,$1)
}egsx;
}
> >
> > Meine Frage betrifft aber eher nur den Regex bzw. das Suchmuster:
> > \[$\_\](.+?)\[$\_\]
> >
> > Wie ist es möglich, dass das Suchmuster sich nur angesprochen fühlt, wenn es NICHT innerhalb von [code] steht? Ich bräuchte also im prinzip sowas:
> >
> > ^\[code\].\*\[$\_\](.+?)\[$\_\].\*^\[code\]
>
> Wenn jeder Code in jedem Code geparst werden soll, musst du rekursiv parsen.
>
> Deine Regex finde ich übrigens seltsam. du matcht auf [b]text[b]
> wo du eventuell [b]text[/b] meinst
>
> mfg Beat
Sorry, da ist auch ein Schreibfehler drin. Es muss heissen:
\[$\_\](.+?)\[/$\_\]
Nun meine nächste Frage: Wie meinst du das mit rekursives parsen?