Beat: [RegExp] Brauche bitte Hilfe bei Suchmuster für preg_replace

Beitrag lesen

Hallo zusammen!

Hallo

Folgendes Problem:
Ich habe bei einem Projekt einen Datei-Upload. Die hochgeladene Datei (im Prinzip eine reine Textdatei) soll nun nach Kommentaren durchsucht werden, und diese sollen rausfliegen.

Verwenden möchte ich gerne preg_replace().

Leider kapiere ich RegExp immer noch in dem Maße, dass ich mir hier das erforderliche Suchmuster selber erstellen könnte.

Folgende Syntax kennzeichnet Kommentare:
1.) -- gefolgt von beliebigen Zeichen bis Zeilenende
2.) --[[ gefolgt von beliebigen Zeichen bis ]]

Bis hierhin hatte ich es mit folgendem Ausdruck versucht: $luafile = preg_replace('/((-){2}.*[^\n]|--[[.* [^]]{2})/', '', $luafile);

[^\n] = alles ausser eine newline
[\n]  = eine newline

warum nicht
'/--.*?\n|--[[.*?]]/'

Aber die 3. Möglichkeit stellt mich vor ein für mich unlösbares Problem:
3.) --[==[ gefolgt von beliebigen Zeichen bis ]==]

wobei es auf die Anzahl der Gleichheitszeichen ankommt. Also Ende ist erst genau da, wo die Zeichenfolge mit exakt derselben Anzahl an Gleichheitszeichen kommt. Dazwischen können auch erneut andere Zeichenfolgen --[[/ --[====[ vorkommen, die dann aber keine Rolle spielen.

Kein Problem. Wir verwenden $1 und \1
'/--[(=+)[.*?]\1]/'

und nun zusammengesetzt
'/--.*?\n|--[[.*?]]|--[(=+)[.*?]\1]/'

und etwas ausfaktoriert
'/--(?:.*?\n|[[.*?]]|[(=+)[.*?]\1])/'

ich kann mir [[ als [=?[ auffassen und den mittleren Ausdruck sparen:
'/--(?:.*?\n|[(=*)[.*?]\1])/'

Nun aber noch ein Problem mit der Reihenfolge
'/--(?:[(=*)[.*?]\1]|.*?\n)/'

Testen musst du selbst.

mfg Beat

--
Woran ich arbeite:
X-Torah
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o