Seite 1 von 1

Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Donnerstag 30. September 2010, 03:18
von snafu
Bisher sind die "Dinger" noch eher ein Mysterium für mich. Ich würde sie ganze gerne verstehen lernen und nicht nur erfolgreich ausprobieren wollen, wenn ihr versteht, was ich meine. Mehrfach ist mir der Literaturhinweis zum Buch "Mastering Regular Expressions" von Jeffrey Friedl ins Auge gesprungen, welches die Thematik sehr umfangreich behandeln soll. Kann man dieses Buch empfehlen? Es konzentriert sich angeblich stark auf Perl. Sind diese Dinge 1 zu 1 auf das Python re-Modul übertragbar? Macht es Sinn, sich allgemein mit regulären Ausdrücken zu beschäftigen oder sollte ich mir eher ein pythonspezifisches Buch zulegen, welches auch auf die Bibliotheksfunktionen des re-Moduls Bezug nimmt?

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Donnerstag 30. September 2010, 06:06
von DasIch
Wenn du das Prinzip dahinter verstehst ist die genau Implementation völlig egal. Ich würde dir mal empfehlen eine Regex Implementation selbst zu entwickeln. Die muss nicht sonderlich effizient sein und sollte bei wirklich regulären Ausdrücken bleiben sonst wirds zu kompliziert ist aber dennoch eine große Hilfe beim Verständnis. Im PyPy Blog ist irgendwo ein Post darüber.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Donnerstag 30. September 2010, 15:02
von cofi
Kann ich unterschreiben. Evtl ist es noch hilfreich davor die echten RE zu betrachten, d.h. die, die auch die regulaeren Sprachen beschreiben, und nicht die Perl-Mostrositaet. Gerade den Isomorphismus zu Finiten Automaten fand ich in der Hinsicht sehr hilfreich.

Fuer die Python-spezifischen Sachen reicht dann IMHO die Doku und das HowTo.

@Post im PyPy-Blog: Wenn ich mich recht erinnere - und denselben Post meine - hat das recht schnell auf Optimierungen abgezielt, vllt kein sooo guter Einstieg.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Donnerstag 30. September 2010, 15:55
von DasIch
Hier mal die Links zu den interessanten Posts zu dem Thema: Dieser Post beschäftigt sich ausführlich mit einer einfachen und effizienten Lösung, in Python die von dieser Haskell Lösung bzw. diesem Paper[PDF] abgeleitet ist. Wer an PyPy bzw. JITs interessiert ist wird eventuell auch noch dieser Post interessieren, der Optimierungen für einen JIT beschreibt.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Freitag 1. Oktober 2010, 08:27
von apollo13
„Mastering regular Expression“ ist imo relativ nett zum Lernen von Regular Expressions. Weiß aber ad hoc nicht mehr ob die auch ne Pythonsektion haben. Aber die letzten paar Kapitel gehen auf die einzelnen Sprachen ein. So stark Perl-haltig fand ich es nicht, müsste aber nochmals nachschauen. Alles in allem denk ich aber nicht, dass du ein extra auf Python zugeschnittenes Buch brauchst.

EDIT:// Das Buch liegt leider zu Hause, dauert wohl noch nen paar Wochen bis ich dort nachschauen kann^^

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Freitag 1. Oktober 2010, 16:36
von snafu
Um mir die Frage teilweise zu beantworten:
The most complete book on regular expressions is almost certainly Jeffrey Friedl’s Mastering Regular Expressions, published by O’Reilly. Unfortunately, it exclusively concentrates on Perl and Java’s flavours of regular expressions, and doesn’t contain any Python material at all, so it won’t be useful as a reference for programming in Python. (The first edition covered Python’s now-removed regex module, which won’t help you much.) Consider checking it out from your library.
http://docs.python.org/howto/regex.html#feedback (letzter Absatz)

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Freitag 1. Oktober 2010, 17:25
von Francesco
Für mich stellt sich die Frage, was ein Durcharbeiten an einem Buch so viel mehr bringen sollte, als einfach ein paar ergoogelte Seiten durchzuarbeiten und vielleicht das wichtigste auszudrucken und einige Notizen in einem Textfile zu speichern? Es gibt einige gute Kurse:

zb.
http://www.regular-expressions.info/
http://regexlib.com/ (hier wird auch das Buch "Regular Expression Pocket Reference" von Tony Stubblebine erwähnt, gibts auch auf Deutsch ("Reguläre Ausdrücke - kurz & gut") und scheint auf deutsch sogar günstiger zu sein)

Dann gibt es Programme wie kodos, wo man re direkt ausprobieren kann.

Freilich hat ein Buch aber auch den Vorteil, dass man alles schön beinander hat und es bequemer ist, auf der Couch sich das durchzulesen als sich vor dem PC das zusammenzuklicken. Ansichtssache... Es gibt da noch die dickeren Wälzer "Mastering Regular Expressions" (wie apollo13 oben erwähnt hat) und "Regular Expressions Cookbook".

Ich steh selber auf wackeligen Füßen, da ich sie auch nicht so oft verwende oder benötige, dann merkt man sich das nicht so richtig. Andere Beispiele, die für mich in dem Zusammenhang noch gelten: gdb und bash und auch bei Python selbst. ;)

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Freitag 1. Oktober 2010, 19:00
von /me

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Freitag 1. Oktober 2010, 20:29
von fana
Hi,

am besten finde ich den Artikel von Doug Hellman. Der ist sehr ausführlich:

http://www.doughellmann.com/PyMOTW/re/ (grad nicht erreichbar, evtl. Google Cache nutzen)

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Samstag 2. Oktober 2010, 11:50
von LanX
Friedl's Buch ist schon der Platzhirsch und hat neben Perl auch Kapitel zu Java und PHP. Da Python wie PHP laut Wikipedia PCRE nutzt verstehe ich das Problem nicht ganz.

In dem Buch gehts halt auch um sehr spezielle Sachen wie Parsing verschachtelter Strukturen, genestete Matches, atomare Ausdrücke, die genauen Mechanismen des Backtracking, resultierende Performanceeffekte und so weiter.

IIRC nutzt er auch keine neueren oder experimentellen Features der Perl RE-Engine, das sollte alles ziemlich kompatibel sein. Und dort wo nicht (falls überhaupt), solltest du durch den Vergleich sogar einen extra Benefit haben.

Zum Vergleich: ich hab einmal erlebt, dass sich jemand bei Perlmonks über das RegEx-Tool der Komodo-IDE beschwert hat. Genauer gesagt hat er ein Bug in Perl vermutet, tatsächlich nutzt aber Komodo intern für alle Sprachen immer Python-REs.

Was an Perl's REs selbst "monströs" sein soll würde ich gerne erklärt haben. Oder geht's um den umgebenden "context"-abhängigen Syntax?

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Samstag 2. Oktober 2010, 13:08
von lunar
@LanX: „Monströs“ bezieht sich wohl darauf, dass PCREs eine Obermenge der regulären Sprachen beschreiben. Folglich sind PCREs streng genommen keine regulären Ausdrücke mehr.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Samstag 2. Oktober 2010, 19:19
von snafu
Hm, verschachtelte Strukturen parsen ist genau das, was mich im Moment interessiert. Und wenn man die PHP-Beispiele übertragen kann, wäre das echt super.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 00:18
von LanX
snafu hat geschrieben:Hm, verschachtelte Strukturen parsen ist genau das, was mich im Moment interessiert. Und wenn man die PHP-Beispiele übertragen kann, wäre das echt super.
das kann ich dir nicht versprechen, ich hab mich auf den Perlcode konzentriert und ob die Perl-REs aus den Beispielen auf PCRE übertragbar sind weiß ich nicht. Bei PCRE ist ja nicht immer drin was drauf steht ("Perl Compatible ...") .


IIRC kreiert er (auf vielerlei Weise) ein rekursives Pattern, in dem er RE-Abschnitte in Abhängigkeit von Rekursionsbedingungen wiederholen lässt.¹

Allerdings sollten in der Theorie PHP und Python kompatibel sein.


Im PHP Teil steht zumindest:
-----------------------------------------
475 Recursive Expressions
475 Matching Text with Nested Parentheses
476 Recursive reference to a set of capturing parentheses
476 Recursive reference via named capture
477 More on possessive quantifiers


Schau doch einfach im Buchladen mal rein... hab ich auch getan! :)

Die Codebeispiele kann man auch bei O'Reilly runterladen.

(UPDATE: zumindest konnte man das früher)

BTW: echte reguläre Ausdrücke würden keine Rekursionen erlauben.

UPDATE:
1) yup sollte helfen "(?R)" ist mittlerweile sowohl in PCRE als auch Perl standard.
siehe auch "RECURSIVE PATTERNS" in http://www.pcre.org/pcre.txt.
perldoc perlre enthält auch Beispiele zur Nutzung von "(?PARNO)" (PARNO ist die Nummer der vorhergehenden Grouping-Klammer)

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 03:01
von Leonidas
LanX hat geschrieben:Da Python wie PHP laut Wikipedia PCRE nutzt verstehe ich das Problem nicht ganz.
Python nutzt kein PCRE sondern eine eigene Engine.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 09:22
von snafu
Francesco hat geschrieben:Für mich stellt sich die Frage, was ein Durcharbeiten an einem Buch so viel mehr bringen sollte, als einfach ein paar ergoogelte Seiten durchzuarbeiten und vielleicht das wichtigste auszudrucken und einige Notizen in einem Textfile zu speichern?
Naja, von einem guten Buch zu einem Spezialthema erwarte ich, dass es sich ausführlich und detailliert mit der Sache beschäftigt. In einem Buch hast du alles aus einer Hand anstatt einer Linksammlung, bei der sich naturgemäß Dinge überschneiden und wo man auch schnell den Überblick verlieren kann.

Nichts für ungut. Ich arbeite sehr viel mit ergoogelten Links und kann daraus auch viel Nutzen ziehen. Man muss sich beispielsweise nur mal die hervorragende Online-Dokumentation allein auf den `python.org`-Seiten anschauen. Auch sind viele Spezifikationen zu diversen Themen online einsehbar, was eine super Sache ist.

Trotzdem schätze ich auch den Wert eines Buches. Insbesondere glaube ich, dass beim Thema Regex - vor allem da ich mir derzeit einen Parser für eine Minisprache mit Verschachtelungen zum Ziel gesetzt habe - eine Spezifikation oder diverse Tutorials, die grundsätzliches erklären, nicht ausreichend sind.

Was ich brauche/möchte, sind vernünftig erklärte und durchdachte Beispiele. Ich möchte wie gesagt verstehen, was ich da tue und möche auch imstande sein, Alternativen nutzen zu können, wenn mir die erste Idee letztlich doch nicht zusagt. So wie ich mich inzwischen als einigermaßen erfahrener Nutzer von Python sehe (der allerdings noch Probleme mit der Planung größerer Projekte hat), so möchte ich auch reguläre Ausdrücke auf Anhieb verstehen können, wenn ich sie sehe und auf der anderen Seite eine Fragestellung relativ zügig und sicher als Regex denken können oder auch abschätzen können, ob reguläre Ausdrücke oder der Python-Sprachumfang ausreichend für die Lösung sind.

Dies ist neben tiefergehenden mathematischen Berechnungen eins der Themen, die ich bisher vor mir hergeschoben habe und ich möchte dies nun anhand einer praktischen Problemstellung angehen, so wie ich es auch schon in anderen Bereichen getan habe. Ist einfach ein persönlicher Ehrgeiz von mir; beruflich habe ich ja nichts mit Python oder generell der Programmierung zu tun.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 10:31
von DasIch
Francesco hat geschrieben:Für mich stellt sich die Frage, was ein Durcharbeiten an einem Buch so viel mehr bringen sollte, als einfach ein paar ergoogelte Seiten durchzuarbeiten und vielleicht das wichtigste auszudrucken und einige Notizen in einem Textfile zu speichern?
Bei einem Buch zu dem Thema hat man möglichst alle Informationen, in gleicher Qualität und in übersichtlicher Form. Desweiteren würde ich bei einem Buch zu einem solchen Thema ebenfalls die (theoretischen) Hintergründe zu dem Thema erwarten, dir mir erlauben die grundlegenden Konzepte zu verstehen statt einer einfachen Erklärung das \d einer beliebigen Ziffer entspricht mit weitergehenden spannenden Fragen wie z.b. "Wie sieht ein Ausdruck aus, der zwei aufeinanderfolgenden Ziffern entspricht?".

Letzteres ist toll für ein kurzes Tutorial dass ich durchsehe um mir was zusammen zu frickeln, hilft mir aber gar nicht wenn ich wirklich lernen und verstehen will, so dass ich mein Wissen auf sämtliche Implementationen übertragen kann. Schliesslich habe ich ja auch den Anspruch reguläre Ausdrücke zu verstehen und nicht die Benutzung der Implementation XY von regulären Ausdrücken genauso wie ich den Anspruch habe Programmieren zu lernen und nicht nur Python.

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 10:47
von Francesco
Ja, das sind alles gute Argumente. Wenn ich mich wirklich in das Thema vertiefen möchte, ist es natürlich besser, ein komplettes Buch zu haben. Und wie gesagt, ist dann auch der Vorteil gegeben, dass das aus einem Guß ist, und Wiederholungen werden im Gegensatz zu einer Linksammlung vermieden.

Ich finde das Thema auch sehr wichtig und interessant, nur brauche ich sie eben doch nicht oft genug, um mir extra ein Buch zu besorgen. Und gerade die Hintergrundinformationen kommen bei den Weblinks oft zu kurz.

Ich mache das für mich oft so, wenn ich einmal einen Überblick haben möchte (aber auch nicht ganz so ins Detail). Ich schau einmal im wikipedia nach, dann auf die verlinkte englische Seite (die in der Regel noch um einiges ausführlicher ist).

Re: Buchempfehlung für reguläre Ausdrücke in Python gesucht

Verfasst: Sonntag 3. Oktober 2010, 13:02
von LanX
Leonidas hat geschrieben:
LanX hat geschrieben:Da Python wie PHP laut Wikipedia PCRE nutzt verstehe ich das Problem nicht ganz.
Python nutzt kein PCRE sondern eine eigene Engine.
Ja offensichtlich liegt WP falsch.
LanX hat geschrieben:Da Python wie PHP laut Wikipedia PCRE nutzt verstehe ich das Problem nicht ganz.
... allerdings bei Durchsicht der PCRE, Perl und Python-Docs scheint dass alle 3 Quellen großen Wert auf Kompabilität legen und Features nachimplementieren. Z.B. unterstützen Perl und PCRE zusätzlich den Python Erweiterungssyntax "(?P...)" z.B. für "named captures" und verweisen auf mögliche Konflikte.

Ich denke Friedl's Buch ist schon deswegen ne gute Empfehlung, RegExes sind ziemlich universell.