Inwiefern?mitsuhiko hat geschrieben:Python's Reguläre Ausdrücke sind aber auch keine.lunar hat geschrieben:Allerdings innerhalb eines Zustandsautomaten, denn gerade Dinge wie Strings mit maskierten Anführungszeichen darin lassen sich mit regulären Ausdrücken nur schwerlich abbilden.
Python-Syntax-Highlighter
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Die können Backrefs, Lookaheads und alles mögliche was mit einem NFA nicht möglich ist.lunar hat geschrieben:Inwiefern?mitsuhiko hat geschrieben:Python's Reguläre Ausdrücke sind aber auch keine.
Unabhängig davon spricht nichts dagegen Strings mit Regulär Expressions inkl. Escapes zu matchen:
Code: Alles auswählen
string_re = re.compile(r"('([^'\\]*(?:\\.[^'\\]*)*)'"
r'|"([^"\\]*(?:\\.[^"\\]*)*)")(?s)')
TUFKAB – the user formerly known as blackbird
Ich hatte dein vorletztes Posting so verstanden, dass du behaupten wolltest, Python's reguläre Ausdrücke wäre in Wirklichkeit keine regulären Ausdrücke. Insofern erscheint es mir gerade etwas irreführend, reguläre Ausdrücke mit Zustandsautomaten zu vergleichen...mitsuhiko hat geschrieben:Die können Backrefs, Lookaheads und alles mögliche was mit einem NFA nicht möglich ist.lunar hat geschrieben:Inwiefern?mitsuhiko hat geschrieben:Python's Reguläre Ausdrücke sind aber auch keine.
Dagegen spricht die Lesbarkeit.Unabhängig davon spricht nichts dagegen Strings mit Regulär Expressions inkl. Escapes zu matchen:
Code: Alles auswählen
string_re = re.compile(r"('([^'\\]*(?:\\.[^'\\]*)*)'" r'|"([^"\\]*(?:\\.[^"\\]*)*)")(?s)')
Reguläre Ausdrücke und endliche Automaten sind äquivalent. Irreführend ist, die Bezeichnung reguläre Ausdrücke für dass was Programmiersprachen bzw. regex-Engines alles können. Jedenfalls für theoretische Informatiker.
Die spricht immer gegen Regexlunar hat geschrieben:Dagegen spricht die Lesbarkeit.Code: Alles auswählen
string_re = re.compile(r"('([^'\\]*(?:\\.[^'\\]*)*)'" r'|"([^"\\]*(?:\\.[^"\\]*)*)")(?s)')
Leute, ich gebe auf ;) Ich verspreche, nicht mehr Code direkt im Webbrowser zu schreiben... das geht nach hinten los.
Ich habe eben noch schnell das Erkennen von gequoteten Anführungszeichen in String gefixt (für den Fall, dass irgendjemand später einmal den Code einfach copy&pasted und ich nicht ganz so blöd dastehe) aber das soll's dann gewesen sein. Der zweite Ansatz erkennt leider nicht die Worte hinter `def` und `class`, weil das ein weiterer Denkfehler war, aber egal, ich mache da jetzt nichts weiter. Ich müsste hier eine state maschine benutzen, die nach bestimmten Token umschaltet. Pygments geht so vor und kann dadurch doc-strings erkennen. Immer noch kein traditioneller Parser, immer nur noch reguläre Ausdrücke...
Stefan
Edit (Leonidas): Restliche Diskussion nach "Emacs-Modes mischen" abgetrennt.
Ich habe eben noch schnell das Erkennen von gequoteten Anführungszeichen in String gefixt (für den Fall, dass irgendjemand später einmal den Code einfach copy&pasted und ich nicht ganz so blöd dastehe) aber das soll's dann gewesen sein. Der zweite Ansatz erkennt leider nicht die Worte hinter `def` und `class`, weil das ein weiterer Denkfehler war, aber egal, ich mache da jetzt nichts weiter. Ich müsste hier eine state maschine benutzen, die nach bestimmten Token umschaltet. Pygments geht so vor und kann dadurch doc-strings erkennen. Immer noch kein traditioneller Parser, immer nur noch reguläre Ausdrücke...
Stefan
Edit (Leonidas): Restliche Diskussion nach "Emacs-Modes mischen" abgetrennt.