Guile und Reguläre Ausdrücke?

Begonnen von ingmar, Freitag, 7. September 2018, 09:54

« vorheriges - nächstes »

ingmar

Hallo,

hat jemand von euch mal versucht, Reguläre Ausdrücke innerhalb von Guile einzusetzen? Hintergrund: Ich möchte Einstellungen aus einem Konfigurationsfile auswerten.

(provided? 'regex) liefert in der Sandbox #t, demnach sollte Guile das eigentlich unterstützen.

Ich stütze mich auf folgende Beschreibung: https://www.gnu.org/software/guile/manual/html_node/Regexp-Functions.html#Regexp-Functions. Aber schon die erste dort erwähnte Funktion schlägt fehl, (string-match "b" "abc") führt zu ERROR: Unbound variable: string-match.

Hat jemand mal mit Regexes gearbeitet und weiß, wie's geht oder wo es dokumentiert ist?


Danke, Gruß,
--ingmar

Malte

#(use-modules (ice-9 regex))
heißt das Zauberwort :)

harm6

Hallo Ingmar,

Du verlinkst zum guile-2.2.4-Manual, doch LilyPond verwendet guile-1.8.
Allerdings steht in beiden manuals im Abschnitt direkt davor, daß `(use-modules (ice-9 regex))` verwendet werden muß.
Deshalb verwende ich immer die big-page-Varianten ;)

Gruß,
  Harm

ingmar

Zitat...steht in beiden manuals im Abschnitt direkt davor, daß `(use-modules (ice-9 regex))` verwendet werden muß.

Tja. Wie kommt es eigentlich, dass ihr lesen könnt und ich offenbar nicht, oder nur so halb. Ich finde das absolut ungerecht.

--ingmar

Malte

Zitat von: ingmar am Freitag,  7. September 2018, 21:21
Tja. Wie kommt es eigentlich, dass ihr lesen könnt und ich offenbar nicht, oder nur so halb. Ich finde das absolut ungerecht.
Ich hab damals auch ne Weile gesucht. Hab vor nem Jahr was mit regexes gemacht und hatte jetzt die Datei schnell gefunden, um nachzuschauen ;)

ingmar

Tja, hier noch ein wenig für die, die in Zukunft vielleicht auch mal vorhaben, reguläre Ausdrücke zu verwenden:

In Guile 1.8 wird nur der Posix-Standard unterstützt. Das hat deutliche Nachteile - vor allem: Die Ausdrücke sind immer greedy. Auch Rückwärtsreferenzen gibt es nicht, du kannst also nicht nach etwas suchen, das zwischen zwei Teilausdrücken eingeschlossen ist und anschließend dieses Gesuchte verwenden. Mit anderen Worten: Wenn du eine bestimmte Stelle im Text finden und verwenden möchtest, musst du schon mit zwei Ausdrücken dessen Begrenzungen vorne und hinten finden. Die Ausdrücke liefern die Start- und Endposition zurück, die gefunden wurden; damit kann man dann sich dann den gesuchten Substring holen. Weniger elegant als die reine Lehre, aber man kann damit arbeiten, und sicher besser als gar nichts.

Ich werd mal ein wenig damit herumspielen und weitere Beobachtungen melden.


Gruß, Danke,
--ingmar