Dein zweiter Post ist auch nicht viel einfacher zu parsen. Du hast da logische Lücken drin: Nach kurzer zeit dachte ich mir "Ist ja fast wie BBC" also fing ich an. klingt so, als hättest du gar nicht erst angefangen, wenn es nicht wie BBCode wäre - und als würdest du jetzt an der Aufgabe tüfteln. Nach kurzer Zeit dachte ich mir: "Ist ja fast wie BBCode." Also fing ich an, den Code von der Übung so umzubauen, daß er BBCode in HTML kompiliert. wäre weit verständlicher gewesen. Falls du nicht vorhast, BBCode zu kompilieren solltest du wirklich an der logischen Struktur deiner Posts arbeiten. O_o



Zum Thema: Autsch. Natürlich ist der Regexp gierig, wenn du explizit sagst, daß er gierig sein soll.
Nehmen wir diesen Regexp: /\[(.*)\]/ Hier ist das .* gierig.
Nehmen wir diesen Regexp: /\[(.*?)\]/ Hier ist das .* nicht gierig, weil das ? die Gierigkeit umstellt. Da es normalerweise gierig ist wird es jetzt ungierig.
Nehmen wir diesen Regexp: /\[(.*)\]/U Hier ist das .* nicht gierig, weil der Modifikator U die Gierigkeit für alle Elemente des Regexps umstellt. Da es normalerweise gierig ist wird es jetzt ungierig.
Nehmen wir diesen Regexp: /\[(.*?)\]/U Hier ist das .* gierig. Zuerst stellt U es auf ungierig und danns tellt ? es wieder auf gierig zurück.

Mit ? und U verhält es sich wie mit dem logischen NICHT: Wenn du es zweimal vrwendest kommst du wieder beim Ausgangszustand an.