Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

InStr mit RegEx

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Zvonko



Anmeldungsdatum: 27.06.2018
Beiträge: 11

BeitragVerfasst am: 29.06.2018, 12:08    Titel: InStr mit RegEx Antworten mit Zitat

Hallo!

Bin neu hier, bitte um Nachsicht...

Ich habe FreeBASIC-1.05.0-win32.zip heruntergeladen und mache meine ersten Versuche.

Code:
#Include "regex.bi"

Dim As String cont
Dim As Integer n

cont = "abcdfgh"
n = instr(cont, "c?f")   ' ? soll beliebiges Zeichen sein
Print n


Nach mehreren Stunden Recherche nehme ich an, dass regex.bi inkludiert sein muss, um RegEx verwenden zu können. Das führt aber zunächst nur zur Fehlermeldung "cannot find -ltre".

(1) Ist die entspr. Komponente also nicht in dem zip-Package?
Jedenfalls habe ich dann aufgrund eines Tipps libtre.a heruntergeladen. Wodurch die Fehlermeldung weg ist.

(2) Trotzdem funktioniert der Code nicht (n ist 0).

Wie macht man es richtig?

Danke im Voraus,
n.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 929
Wohnort: Austria

BeitragVerfasst am: 30.06.2018, 12:31    Titel: Antworten mit Zitat

FreeBasic selbst bringt nur sehr grundlegende Funktionen mit sich, da ist eine Regex-Unterstützung nicht dabei. Die in FreeBasic eingebaute INSTR Funktion versteht also keine regulären Ausdrücke.

Wie du schon gesehen hast musst du hierfür eine Bibliothek verwenden, die die entsprechende Funktionalität bereitstellt. Eine davon ist die von dir genannte "TRE".

Wie diese zu verwenden ist findest du in deren Dokumentation: https://laurikari.net/tre/documentation/

Eine vorkompilierte Version (für 32-bit und 64-bit Windows; als statische oder dynamische Bibliothek) hab ich hier inkl. FreeBasic Beispielcode: http://users.freebasic-portal.de/stw/files/prog/fb/libs/libtre-080.zip

---

Alternative Bibliotheken gibt es viele. Ich habe z.B. hier SLRE verwendet (die letzte Version davon, die noch unter MIT lizenziert war): https://bitbucket.org/st_w/fb-jenkins/src/34b51a8ef68aa5646eb33315a69800195e6cb0e6/ut-consistency-checker/slre/?at=master
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 875
Wohnort: Ruhrpott

BeitragVerfasst am: 30.06.2018, 12:59    Titel: Antworten mit Zitat

Zitat:
Ist die entspr. Komponente also nicht in dem zip-Package?
In den älteren Distributionen sind die erforderlichen Dateien noch komplett enthalten, in den neueren nicht mehr, was darauf hindeutet, daß eigentlich niemand mehr Posix benutzt.
Zitat:
Trotzdem funktioniert der Code nicht (n ist 0).
Das ist mal wieder eine Gelegenheit, einen meiner Lieblingssätze anzubringen: "Der Computer macht nicht das, was du willst, sondern das, was du ihm sagst". Die INSTR-Funktion meldet völlig korrekt, daß die Zeichenfolge "c?f" (wobei das Fragezeichen kein Platzhalter ist, die Stringfunktionen von FB unterstützen von zu Hause aus keine Platzhalter) im String "abcdfgh" nicht vorkommt.

Das Einbinden der "regex.bi" ändert nicht das Verhalten von INSTR, sondern ermöglicht es dir, auf die in der Bibliothek "libtre.a" (bzw. "tre.dll") implementierten Prozeduren zuzugreifen (siehe Beispiel unter %FB-Ordner%\examples\regex\TRE\match.bas).

Es würde mich sehr wundern, wenn nicht schon irgend jemand diese Platzhalterfunktionen in FB programmiert hat. Google mal nach "freebasic" und "wildcard".

Gruß
grindstone

EDIT: Wie ich sehe, hat St_W inzwischen schon geantwotet. Sind also doch nicht alle in Urlaub. grinsen
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 929
Wohnort: Austria

BeitragVerfasst am: 30.06.2018, 13:28    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
siehe Beispiel unter %FB-Ordner%\examples\regex\TRE\match.bas

Da findest du übrigens generell viele Beispiele für typische Anwendungsfälle (und der Beispielcode in meinem libtre ZIP stammt auch von da lächeln )

Online findest du das auch hier:
https://github.com/freebasic/fbc/tree/master/examples/regex/TRE
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 875
Wohnort: Ruhrpott

BeitragVerfasst am: 01.07.2018, 00:11    Titel: Antworten mit Zitat

Für den Umgang mit Unicode unter FB könnte auch das hier interessant sein.

Und zum Thema Reguläre Ausdrücke habe ich das hier gefunden.

Guß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz