Komplizierten Regulären Ausdruck vereinfachen?
Verfasst: Donnerstag 23. Juli 2009, 15:25
Hallo Leute,
ich bin grade dabei, eine Markupsprache zu entwerfen (auf re-Basis) und wollte dabei Blöcke nach diesem Schema hier matchen:
wobei `arguments` dem Schema
folgt.
Beispiele:
Dabei ist folgender Reguläre Ausdruck herausgekommen:
wobei `name` zB für `code` steht und `p` für das Pattern für den Blockinhalt, zB `.+?`.
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.
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.