Skip to main content


 
Ich werde auf der FrOSCon einen Workshop über Reguläre Ausdrücke halten.

Was würdet Ihr wissen wollen? Welche Beispiele würdet Ihr mit regulären Ausdrücken lösen wollen?

Weltherrschaft!!!

Spass beiseite, meist geht es um irgendeine Datenstruktur, die zerlegt oder gefiltert werden will. Ansonsten setze ich es häufig ein um Configfiles per sed und regex anzupassen.

Du bist eher nicht die Zielgruppe, wenn Du reguläre Ausdrücke bereits einsetzt.

Och, ich verwende sie u.A. so:
Mailadressen erkennen. CSV-Dateien zerlegen/erzeugen. Ungesunde Ausdrücke aus "Gästebüchern" rausfiltern, bevor die die Datenbank zerlegen. Logfiles durchflöhen.

Du gehörst damit auch eher nicht zur Zielgruppe.

Unterschiede Perl, Python, Bash, PHP. Und welche Libraries es da gibt...

Darauf wollte ich nur kurz eingehen. Im Workshop soll es vor allem um das selber Anwenden gehen und da hatte ich als Minimalvorstellung grep (weil es alle drei grossen kann) und sed für die Manipulation.

sed ist toll. Eins meiner Lieblingstools. Wirst Du auch kurz auf unterschiedliche engines eingehen?

Das soll ja für Einsteiger sein, ich wollte durch den ganzen Workshop alle drei Familien "mitschleppen", auf Engines oder Implementationen gehe ich nur am Rande ein.

Also: BRE / ERE / PRE bzw. PCRE mache ich und die Engines überfliege ich nur.

Ja, mir ist klar dass das zum Einstieg ist... deswegen fragte ich ja, ob Du sie kurz anmerkst :-) Finde ich gut :-)

Hmm, ok, also komplett andere Richtung.

Yip, es ist ja ein Workshop.

Grundlagen, Unterschiede von Regex-Engines und Familien (regex, extended, perl), typische Anwendungsfälle und, ganz wichtig, Grenzen

Wieso kann man CSV nicht korrekt mit Regexen parsen? (Escapte Anführungszeichen!)
Wie sieht eine Regex aus, die eine IPv4 matched? Wieso ist das so häßlich?
Wie kann man die Gültigkeit einer Mailadresse regexen?

Danke, davon habe ich bereits einiges auf dem Zettel, insbesondere BRE/ ERE/ PRE.

Greediness ist noch ein Thema, IP-Adressen parsen, ist eine gute Idee, hatte ich bis jetzt nicht auf dem Plan, Logs sind ein Thema, Gruppierungen und Rückbezüge ein weiteres.

Mailadressen RegEx wollte ich zur Abschreckung zeigen. Um die Komplexität zu verstehen, muss man den RFC gut verstanden haben.

@Dirk Deimeke Alle 3 Beispiele sind Fangfragen, weil es Dinge sind, die man nur mit Regexen nicht oder nicht schön hin bekommt. Es sind Dinge, bei denen man über die Grenzen von Regexen und das Grenzland zwischen Lexer und Parser reden kann.

Grenzen von IPv4-Zahlen kann man zum Beispiel mit Regexen lexen, aber dann sollte man die vier gefundenen Strings atoi()en und numerisch die Bereiche checken. Und gegen CSV hilft nur ein korrekter Parser, da geht es nicht sehr um Regexe, die machen nur Schmerzen.

IP kann man schon Regexen, das ist aber furchtbar, da gebe ich Dir Recht. Es ist ein schönes Beispiel, dass man etwas nicht machen muss, nur weil es (irgendwie) machbar ist. Gleiches gilt für Mailadressen.

Für CSVs gibt es meiner Ansicht nach keine Möglichkeit, lasse mich aber gerne vom Gegenteil überzeugen.

Aber, ich habe Dich richtig verstanden. Nicht nur zeigen, was man machen kann, auch zeigen, was kaum oder gar nicht geht.

Uuids und verschiedene Formate in denen rm ein Datum angeben ist sind immer gut.

html parsing

Meinst Du, dass man das in zwei Stunden hinbekommt? Von null auf "html parsing"?

Einer meiner früheren Chefs mochte nie Bibliotheken nachinstallieren, er hat einen json-Parser in Bash geschrieben. Kann man machen, ist aber ziemlich bescheuert.

ich denke nicht das man HTML mit regex parsen sollte 😂

Praktische Beispiele, in denen ein Python string.replace nicht ausreicht, z.B. wenn in einem langen String Beginn-Ende Ketten mit variablem Zwischenstring ausgetauscht werden müssen. Hatte ich heute erst, als ich Meistertask Exporte in Markdown umwandeln musste.

Genau darum soll es gehen.

Was sind überhaupt reguläre Sprachen? Woher kommen sie (historisch)? Warum sind sie eine gute Idee?

Das reisse ich kurz an. Es geht im Grossen und Ganzen mehr um die Praxis.

E-Mail Adressen validieren und XML parsen bitte! 😏

E-Mail-Adressen lassen sich nicht "einfach" mit RegEx validieren. Das zu erklären, sprengt den Rahmen.

Über Teile von XML können wir sicher reden.

Einfach so eine sachliche Antwort auf meinen Trollversuch? ;))
Ich glaube was ich gerne für RegEx Neulinge sehen würde ist ein "don't do this" Abschnitt. Bei Mail gibt's ja so Kilometer lange Ausdrücke, obwohl '.+@.+\..+' ja in vielen Fällen "gut genug" ist und man durch mehr eher was Kaputtmacht.

einige Editoren unterstützen regex in der Suche. Wenn man jetzt ein paar Muster kennt/kann hilft das schon super bei der genaueren Suche.

@Dirk Deimeke Ich hab immer das Gefühl, ich könne etwas erst wirklich in der Praxis brauchen, wenn ich verstehe, was wirklich dahinter steckt. Aber das ist halt so eine Mathematiker-Krankheit. ;-)

(Habe auch vier Semester Mathematik studiert bis ich gemerkt habe, dass es nichts für mich ist ... danach dann Informatik).

@Dirk Deimeke Ich wollte eigentlich Informatik studieren gehen, habe mich dann aber entschieden Philosophie zu studieren. Da habe ich nach vier Semester gemerkt, dass es nichts für mich ist und danach Mathematik gemacht...