ich bin grade dabei, eine Markupsprache zu entwerfen (auf re-Basis) und wollte dabei Blöcke nach diesem Schema hier matchen:
Code: Alles auswählen
{% blockname arguments %}blockcontent{% end blockname %}
Code: Alles auswählen
key=value
Beispiele:
Code: Alles auswählen
{% code %}some code{% end code %}
{% code lang=js %}document.getElementByID('foo')...{% end code %}
{% code lang=py show_line_numbers=false %}def foo(bar): return bar{% end code %}
Code: Alles auswählen
return "{%% %(name)s%(args)s %%}(?P<c>%(p)s){%% end %(name)s %%}" % {
'name' : name,
'p' : pattern,
'args': '' if not args else ''.join(
('( (%s)=(?P<%s>[^ ]+))?' % (arg, arg) for arg in args))
}
Meine Frage jetzt: Kann man den Ausdruck irgendwie vereinfachen? Das sieht nämlich ziemlich komisch aus alles.
Grüße
PS: Nein, ich will keine anderen libraries verwenden wie pyparsing oder so Faxen.