ruby-mine

exploring the mine

Reguläre Ausdrücke, Teil 0.2: Was sind eigentlich diese ominösen "regulären Ausdrücke"? (Fortsetzung von Teil 0.1)

von wonado am 17.06.2009 (23 Uhr)

von WoNáDo

Nach monatelanger Pause habe ich jetzt ein bisschen Zeit den dritten Teil dieses einführenden Überblicks zu schreiben. Offen ist noch die Frage nach der Überprüfung, also ob ein Text einer vorgegebenen Beschreibung genügt. Beim Versuch der Beantwortung beschränke ich mich jetzt auf reguläre Ausdrücke und deren Erweiterungen.

Dieser Teil ist auch ein wenig subjektiver als alle anderen Beiträge. Ich habe bisher (hoffentlich) immer Beispiele und Beschreibungen gebracht und die Frage, ob ein Einsatz in bestimmten Situationen sinnvoll ist, restlos dem Leser überlassen. Das basierte auf der Voraussetzung, dass ein Benutzer regulärer Ausdrücke schon wissen wird, warum er sie einsetzen will (oder durch Dritte erzwungen einsetzen muss).

Diese Basis bleibt bestehen, nur werde ich bezüglich der Anwendung erweiterter regulärer Ausdrücke auf ein paar Probleme eingehen, die meiner Meinung nach die sinnvollen Einsatzbereiche begrenzen.

Also los...


Vollständigen Artikel lesen...
 
Kommentare (0)

Reguläre Ausdrücke, Teil 0.1: Was sind eigentlich diese ominösen "regulären Ausdrücke"? (Fortsetzung von Teil 0.0)

von wonado am 05.04.2009 (21 Uhr)

von WoNáDo

Hier nun die Fortsetzung von Teil 0.0. Offen blieben noch zwei Fragen im Zusammenhang mit der Strukturbeschreibung: "In welcher Form kann man so etwas beschreiben?" und "Wie kann ich überprüfen, ob ein Text der Beschreibung genügt?".

Teil 0.1 versucht Antworten auf die erste Frage zu geben, ohne dabei zu sehr ins Detail zu gehen. Diese Themen werden umfangreich in der Literatur zur Theoretischen Informatik und zum Thema Compilerbau behandelt.

Also los...


Vollständigen Artikel lesen...
 
Kommentare (0)

Reguläre Ausdrücke, Teil 0.0: Was sind eigentlich diese ominösen "regulären Ausdrücke"?

von wonado am 04.04.2009 (23 Uhr)

von WoNáDo

Ich habe ein Problem. Nachdem inzwischen Teil 8 dieser Serie existiert, die bei Teil 1 begann, tauchte immer wieder mal die Frage nach einführenden Texten auf. Es wäre bestimmt verwirrend diese beispielsweise als Teil 9 bis Teil 13 zu führen, um dann als Teil 14 wieder etwas in der Preislage "wie quetsche ich das Letzte aus Oniguruma raus?" anzufügen.

Nun gibt es noch die 0, die selbstverständlich sehr geeignet für diese Zwecke ist - aber es gibt davon nur eine!

Also mache ich es ähnlich wie Ruby, indem ich einfach durch einen Punkt getrennt Unterpunkte einführe, damit ich vor der 1 noch reichlich Platz habe.

Klar? - Dann fange ich mal ganz langsam an... - ...ehe ich es vergesse: Bei den Nuller-Teilen sind Kopfschmerztabletten eher unnötig. Die Teile, die sich mit theoretischen Aspekten beschäftigen, können frei nach dem Motto "Mut zur Lücke" überlesen werden. Mit den Anwendungen regulärer Ausdrücke in Ruby wird man trotzdem zurecht kommen.


Vollständigen Artikel lesen...
 
Kommentare (1)

Reguläre Ausdrücke, Teil 8: Oniguruma und dynamische Relativbezüge

von wonado am 09.02.2009 (17 Uhr)

von WoNáDo

In Teil 8 dreht sich alles um die dynamischen Relativbezüge. Darunter verstehe ich die in der Beschreibung von Oniguruma unter back reference with nest level aufgeführten Möglichkeiten, dynamisch auf den Wert eines Untermusters, benannt oder unbenannt, zugreifen zu können, wobei man die gewünschte relative Stack-Position angeben kann. Alle diesbezüglichen Unklarheiten kann dieser Artikel (hoffentlich) beseitigen.

Die vollständige Beschreibung der in Oniguruma vorhandenen Möglichkeiten für reguläre Ausdrücke befindet sich hier.

Auch diesmal wieder die Anmerkung, dass die Beispiele nur als erklärende Programme für die betrachteten regulären Ausdrücke dienen. Gerade im Zusammenhang mit den dynamischen Relativbezügen lassen sich nicht leicht Beispiele finden, für die man diese Technik wirklich benötigt - aber vielleicht fällt ja jemandem, der das hier liest, eine Killer-Anwendung ein.

Nun aber los.


Vollständigen Artikel lesen...
 
Kommentare (1)

Reguläre Ausdrücke, Teil 7: Oniguruma und statische Relativbezüge

von wonado am 07.02.2009 (21 Uhr)

von WoNáDo

Die Teile 7 und 8, die nun fast zweieinhalb Jahre nach Teil 6 erscheinen, behandeln die statischen und dynamischen Relativbezüge in Oniguruma, sind also in der gerade freigegebenen Version Ruby 1.9.1 verfügbar. Die statischen Relativbezüge, die Teil 7 behandelt, wurden erst in der letzten Version von Oniguruma bereitgestellt, während die in Teil 8 behandelten dynamischen Relativbezüge schon länger existieren und von mir in eingeschränkter Form auch bei den Palindrom-Beispielen von Teil 5 berücksichtigt wurden.

Die vollständige Beschreibung der in Oniguruma vorhandenen Möglichkeiten für reguläre Ausdrücke befindet sich hier.

Etwas möchte ich noch anmerken. Die Beispiele dienen als erklärende Programme für die betrachteten regulären Ausdrücke. Wahrscheinlich lassen sich andere und einfachere Lösungen für die Aufgaben finden, die ohne die betrachteten Elemente und unter Einsatz anderer Möglichkeiten von Ruby funktionieren.

Genug der Vorrede - los gehts.


Vollständigen Artikel lesen...
 
Kommentare (1)

Reguläre Ausdrücke, Teil 6: Unerwartetes, Gemeinheiten und Tricks.

von wonado am 29.10.2006 (19 Uhr)

von WoNáDo

Vorwort von bovi

So nun ist es soweit. Der letzte Teil von Wolfgangs Regexp Artikeln ist hiermit Online. Eine kleine Übersicht:

1: Gruppen, Quantoren und Kino-süchtige Programmierer
2: Atomare Zeitersparnis
3: Zukunftsaussichten und die Jagd nach Feten
4: Ungebetene Gäste, Theatertexte und formale Begrüssungen
4a: Vereinfachte formale Begrüssungen.
5: Benannte Gruppen, Palindrome, …

Mit diesem 6. Teil endet die Serie vorläufig. Und deshalb möchte ich die Chance nutzen und mich ganz herzlich bei Wolfgang bedanken. Für einen der weltweit tiefsten Einblicke in die Möglichkeiten Regulärer Audrücke mit Ruby…

DANKE

Weiter im Text

Am Ende dieser Textserie über reguläre Ausdrücke angekommen gibt es es noch eine Art Anhang. Hier stehen ungeordnet kurze Anmerkungen zu den Sachen, über die man immer mal wieder bei der Anwendung regulärer Ausdrücke stolpert.

Ein Teil der Themen wurde schon in den vorhergehenden Beiträgen am Rande behandelt. Also nicht über derartige Wiederholungen wundern, sie sind beabsichtigt. Dieser Teil hier soll eine Art “kostenloses Kopfschmerzmittel” darstellen, da er durch Hinweise auf problematische Situationen eventuelles Kopfweh im Vorfeld vermeiden soll.

Alle Hinweise und Beispiele gelten für Ruby 1.8.x und 1.9. Über Ruby 1.6 kann ich keine Aussagen (mehr) machen - ich habe es nicht installiert und eigentlich schon vergessen. Sollte ein Fall nur für eine bestimmte Version zutreffen steht das dabei.

Erwähnen muss ich noch, dass die folgenden Auflistungen nicht vollständig sind. Wer wirklich viel mit komplexen regulären Ausdrücken arbeiten will (oder muss) sollte den schon öfter erwähnten “Friedl” (”Reguläre Ausdrücke” - O’Reilly-Verlag) durcharbeiten.

Los gehts!


Vollständigen Artikel lesen...
 
Kommentare (1)

Reguläre Ausdrücke, Teil 5: Benannte Gruppen, Palindrome, Taschenrechner und Klammergebirge.

von wonado am 17.09.2006 (15 Uhr)

von WoNáDo

Auch dieser Beitrag betriff Ruby 1.9. Kein Beispiel läuft mehr mit Ruby 1.8, geschweige denn mit Ruby 1.6. Wer weitergehende und genaue Informationen zur ab Ruby 1.9 benutzten Mustermaschine “Oniguruma” haben möchte, findet diese auf der offiziellen Seite, insbesondere benutze ich hier die Informationen, die in “RE.txt” stehen.

Da Ruby 1.9 eine Version ist, die sich mitten in der Entwicklung befindet (eine stabile Version 1.9.1 ist erst für Weihnachten 2007 geplant) und Oniguruma ständig weiterentwickelt wird, kann sich noch vieles ändern. Von diesen Änderungen an Oniguruma sind auch die Beispiele dieses Textes betroffen.

Die Beispiele unter den Überschriften “Benannte Gruppen”, “Taschenrechner” und “Klammergebirge” laufen alle mit der Version “ruby-1.9.0-20060415-i386-mswin32″ unter Windows. Ältere Versionen von Ruby 1.9 sollte man nicht benutzen.

Für die Beispiele zu “Palindrome” muss derzeit noch eine eigene Ruby-Version zusammengestellt werden, da Eigenschaften von Oniguruma benutzt werden, die erst ab Version 4.2.0 verfügbar sind. Wie man dies unter Windows machen kann ist im Ruby-Forum im Beitrag Hat jemand schon einmal YARV kompiliert? diskutiert und beschrieben.

Eine Bitte habe ich vorab. In diesem Artikel werden überwiegend neue Leitungsmerkmale benutzt, die sich noch ändern können oder deren Benutzung von Ruby aus geändert werden kann. Falls jemandem auffällt, dass sich Beispiele nicht (mehr) so wie dargestellt verhalten, bitte ich um einen beschreibenden Kommentar zum Artikel, damit auch andere am Wissen teilhaben können.

Alles klar? - na dann gehts los!


Vollständigen Artikel lesen...
 
Kommentare (3)

Reguläre Ausdrücke, Teil 4a: Vereinfachte formale Begrüssungen.

von wonado am 10.09.2006 (21 Uhr)

von WoNáDo

Es ist etwas wunderbares geschehen. Kurz nachdem ich K. Kosako (Oniguruma) das Problem mit dem nicht erlaubten /\G/ in “look-behind”-Konstrukten gemailt habe (siehe Beitrag), stellte er eine neue Oniguruma Version (4.1.2) bereit. Diese habe ich dann in die Ruby 1.9-Quellen kopiert und Ruby 1.9 damit auf Windows erstellt.

Hier ist nun die Aufbereitung der formalen Begrüssung in der von mir gewollten Form.


Vollständigen Artikel lesen...
 
Kommentare (1)

Reguläre Ausdrücke, Teil 4: Ungebetene Gäste, Theatertexte und formale Begrüssungen

von wonado am 06.09.2006 (23 Uhr)

von WoNáDo

So - nun sind wir bei Ruby 1.9 gelandet. Was jetzt folgt geht nicht mehr mit Ruby 1.8. Dahinter steckt die Mustermaschine “Oniguruma”, zu der man mehr auf der offiziellen Seite mehr erfahren kann, speziell von Interesse ist das Dokument “RE.txt”, in welchem die gültigen Musterelemente beschrieben sind.

Ruby 1.9 kann man sich selber erstellen oder für Windows eine lauffähige Version herunterladen. Alle Programme dieses Beitrags laufen unter Windows mit der aus “ruby-1.9.0-20060415-i386-mswin32.zip” extrahierten Version ohne Probleme.


Vollständigen Artikel lesen...
 
Kommentare (3)

Reguläre Ausdrücke, Teil 3: Zukunftsaussichten und die Jagd nach Feten

von wonado am 21.07.2006 (08 Uhr)

von WoNáDo

Nun der letzte Teil der Sequenz, der sich noch mit den Möglichkeiten von Ruby 1.8 beschäftigt.

Wer mochte nicht schon mal wissen, was die Zukunft bringt. Wenn man kurz mal einen Blick in die Zukunft werfen könnte, wären manche Entscheidungen viel einfacher – oft würden sie sich sogar erübrigen.

Nun hat die Anwendung regulärer Ausdrücke auf Texte – also das Pattern-Matching – nicht wirklich etwas mit dem Blick in die Zukunft zu tun. Für die den Musterabgleich versuchende Mustermaschine gibt es allerdings eine Vergangenheit, nämlich all das, was sie bisher erkundet hat, und eine Zukunft, das, was sie noch erkunden soll. Es können also durchaus Situationen auftreten, in denen es sehr sinnvoll wäre, wenn man so etwas wie ‘schau mal kurz nach, ob … noch kommt / nicht kommt’ formulieren könnte. Für diesen Zweck gibt es die Musterelemente /(?=…)/ (Positive Look Ahead) und /(?!…)/ (Negative Look Ahead). bezeichnet hier wieder irgendwelche Unterausdrücke.


Vollständigen Artikel lesen...
 
Kommentare (6)

Reguläre Ausdrücke, Teil 2: Atomare Zeitersparnis

von wonado am 21.06.2006 (23 Uhr)

von WoNáDo

Auch diesmal dreht es sich um Reguläre Ausdrücke in Ruby. Nachdem die Quantoren das letzte Mal im Mittelpunkt standen, ist es diesmal die Atomare Gruppierung.

Atomare Gruppierungen

Kurz und schmerzlos: Atomare Gruppen sind Teile regulärer Ausdrücke, die in speziellen Klammern stehen: /(?>…)/, wobei ... irgendein Teilausdruck ist.

Schön – aber was soll das Ganze?


Vollständigen Artikel lesen...
 
Kommentare (5)

Reguläre Ausdrücke, Teil 1: Gruppen, Quantoren und Kino-süchtige Programmierer

von wonado am 05.06.2006 (23 Uhr)

Dieser Beitrag wurde von Wolfgang Nádasi-Donner alias WoNáDo verbrochen. Damit ist die Rolle des Prügelknaben vergeben.

Richtig geraten - dieser Beitrag dreht sich um Reguläre Ausdrücke und deren Anwendung zur Mustersuche und Textersetzung in Ruby. Allerdings geht es auch nicht um die ganze reguläre Ausdruckswelt, sondern um die Teile, die sie mächtig und manchmal unübersichtlich machen.


Vollständigen Artikel lesen...
 
Kommentare (3)