Klingt traurig, nicht? Es ist wirklich wahr: Das Projekt YARV ist beendet!
Aus dem ChangeLog:
Mon Jan 01 00:00:00 2007 Koichi Sasada* Merge YARV
YARV ist tot, es lebe Ruby 1.9!
von WoNáDo
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
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!
Es tut sich etwas! Wie ich gerade erfahren habe, haben einige Core Entwickler am Sonntag beschlossen, den seit April parallel laufenden YARV Zweig innerhalb einer straffen Roadmap in den Hauptzweig zu mergen. Bei dieser Aktion wird gleichzeitig das gesamte Ruby Repository auf Subversion umgestellt. Es wird wohl einige Wochen (Monate?!) dauern bis das neue Repository wieder stabil läuft. Bis zu diesem Zeitpunkt, wird es wohl keine Möglichkeiten geben, Patches in den 1.9er Zweig zu bringen. Weiterhin ist es nun offiziell, dass der 1.8er am Ende ist. Es wird keine neuen Features in diesem Zweig geben. Ausgenommen sind natürlich Sicherheitsfixes.
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!
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.
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.
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.
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.
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?
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.
Murphy hat Euch in den letzten Wochen einen tiefen Einblick in die syntaktischen Finessen von Ruby geliefert. Ihr habt normale Strings und Fancy Strings kennengelernt. Es stellte sich heraus, dass Here Docs ebenfalls nur Strings mit einer zusätzlichen Dimension sind. Die funktionale Programmierung mit Symbol#to_proc macht Euch das Leben um einiges leichter. Und Fehlerbehandlung mit rescue ist nun zu einem selbstverständlichen Codefragment geworden, welches jeden unsicheren Code schmückt. Parallel hierzu möchten wir euch nun auf einer neuen Ebene einen Einblick in unseren Rubin verschaffen. Hierzu fahren wir die Schmelzanlage auf knapp 2050°C hoch und schauen uns an, was sich im inneren des Edelsteins befindet.