split.s: Regex: BBCode parsen

Beitrag lesen

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?