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)

Warum Ruby 1.9.0?

von bovi am 25.12.2007 (17 Uhr)

Matz ist vorbeigekommen und er hat uns etwas mitgebracht! Einen funkelnden Rubin mit der Aufschrift 1.9.0

Nun höre ich schon die ersten Leute grummeln:

Schon wieder ein neues Release? Es gab doch gerade mal vor knapp 7 Monaten die 1.8.6, sollte diese Version nicht überings 1.9.1 heißen und 0.0.4 Versionspunkte sind ja auch nicht gerade viel. ALLES DOOF!!".

Diese Leute irren sich! Die 0.0.4 Versionspunkte haben es in sich.


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

Neueste Ergänzungen zu "Ruby 1.9 aus neuen Snapshots auf Windows erstellen"

von wonado am 23.10.2007 (01 Uhr)

Es gibt ein paar Änderungen zum in Ruby 1.9 aus neuen Snapshots auf Windows erstellen beschriebenen Vorgehen.

Viel Spass beim Experimentieren und Testen.

 
Kommentare (0)

Wenn aus dem hässlichen Entlein ein schöner Schwan wird...

von wonado am 19.10.2007 (00 Uhr)

Nicht dass ich Ruby jemals mit einem hässlichen Entlein vergleichen würde oder so, aber eine Klasse war nicht so gelungen, weil sie eigentlich etwas anderes war: String

Seit geraumer Zeit geistert Unicode durch die Datenwelt, neben anderen Multibyte-Encodings, die ja für die Asiatischen Zeichensätze eh unumgänglich sind.

Vor längerer Zeit stellte ich ganz am Anfang meiner Ruby-Experimente in einem (nicht mehr existierenden) englischsprachigen Ruby-Forum die Frage nach den Unicode-Möglichkeiten mit Ruby. Ich erhielt die Antwort, dass Ruby "encoding agnostic" sei.

Schnell stellte ich dann fest, dass die Klasse String eigentlich ihren Namen nicht verdient, sondern eher Bytes hätte heissen müssen. Dies legte beispielsweise 'a'[0] auch nahe, weil man nicht etwa 'a' als Antwort erhielt, sondern 97. Alle anderen Methoden der Klasse verhielten sich entsprechend.

Lange Zeit geisterten dann diverse Initiativen oder Ideen für eine bessere Unicode-Unterstützung durch die Klasse String im Internet-Universum herum - nur - es passierte nicht wirklich was und ich war bestimmt nicht der einzige der langsam skeptisch wurde.

Dann las ich beinah ungläubig eine eigenclass-RSS-Mitteilung und den Artikel über die Änderungen der Klasse String.

Erste Tests mit einer aktuellen Version zeigen zwar, dass noch nicht alles vollständig ist (auch murphy machte schon diese Erfahrung), aber Strings für Ruby 1.9.1 sind auf dem besten Weg!

 
Kommentare (3)

Ruby 1.9 aus neuen Snapshots auf Windows erstellen

von wonado am 07.05.2007 (14 Uhr)

Kurz und schmerzlos, nicht sonderlich mühsam formatiert, sondern praktisch einfach vom Forum kopiert. murphy meinte, dass das ein Blog-Beitrag werden sollte - vielleicht hat er ja recht und es funktioniert sogar noch längere Zeit so. Angefangen hat es damit, dass ich aktuelle Ruby 1.9-Snapshots nicht mehr compilieren etc. konnte. Ungefähr seit Beginn 2007 wird dafür offensichtlich Ruby selber eingesetzt. Dann erhielt ich umfangreiche Tipps von reima, die aber bei mir nicht funktionieren wollten. Das alles kann man hier nachlesen, falls Bedarf existiert.

Nach längerem Versuchen habe ich es dann hinbekommen Ruby 1.9 aus dem Snapshot vom 03. Mai 2007 zu erstellen. Ob das nun mit anderen auch klappt weiss ich nicht. Ich weiss nicht einmal, ob all die Fehler, die zwischendurch mal auftraten, durch meinen Rechner (altes Notebook mit 128MB), mein System (Windows2000), die MinGW/MSYS-Versionen oder die jeweiligen Ruby 1.9-Snapshots verursacht wurden.

Fest steht nur, dass die im Folgenden beschriebene Vorgehensweise für den oben angegebenen Snapshot funktionierte. Wegen des Laufwerkes F: bleibt zu bemerken, dass mein Windows2000-System für Tests darauf installiert ist.

Folgendes habe ich gemacht (die entsprechende Software muss natürlich vorher geholt werden):

Danach steht Ruby19 in F:\ruby19 zur Verfügung. Jetzt muss man den Path noch um F:\ruby19\bin erweitern und die Datei .inputrc mit dem Inhalt...

"\M-[": "["
"\M-]": "]"
"\M-{": "{"
"\M-}": "}"
"\M-\\": "\\"
"\M-|": "|"
"\M-@": "@"
"\M-~": "~"
"\M-€": "€"

...am einfachsten in F:\ruby19 unterbringen. Dann verbleibt noch die Arbeit, eine neue Environment-Variable einzurichten. Sie muss INPUTRC heissen und als Wert F:\ruby19\.inputrc haben. Dann geht sogar irb19 so, wie man sich das wünscht (das EURO-Zeichen will doch nicht - vielleicht findet ja jemand anderes heraus, was da los ist).

Am Ende lief jedenfalls Ruby 1.9:

F:\Ruby19Build>ruby19 -v
ruby 1.9.0 (2007-05-03 patchlevel 0) [i386-mingw32]

 
Kommentare (4)

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)