Ich experimentiere in letzter Zeit mit Template-Engines herum und bin in einem sehr frühen Stadium bei einem regulären Ausdruck hängen geblieben.
Der erste Schritt in meiner Template-Engine sollte sein, alle Template-Konstrukte zu extrahieren. Also habe ich folgenden regulären Ausdruck geschrieben:
# Split all relevant parts apart to merger them later on.
exp_tags = re.compile(r'({[%|{](.*)[}|%]})')
print exp_tags.split(body)
was gut funktioniert, bis 2 Vorlagenkonstrukte in einer Zeile stehen. Der Ausdruck führt sie dann zusammen und teilt sie nicht einzeln auf.
Exemple :
<section>
{{title}}{{text}}
</section>
Sollte dazu führen:
{'<section>', '{{title}}', 'title', '{{text}}', 'text', '</section>'}
Aber Ergebnisse in:
{'<section>', '{{title}}{{text}}', 'title}}{{text', '</section>'}
Weiß jemand, wie ich meine Ziele mit regulären Ausdrücken erreichen kann?