RegEx - ursprüngliche Gruppe ausgeben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

RegEx - ursprüngliche Gruppe ausgeben

Beitrag von TomS »

Hallo.

Mal wieder ne Frage meinerseits:

Gibt es bei den regulären Ausdrücken in PB, die Möglichkeit die ursprüngliche Gruppe ausgeben zu lassen?

Mit dem Unix-Befehl Ed (grep, was auch immer), geht das mit "\1", wobei "1" den Index der Gruppe angibt. (\0 würde das gesamte Match zurückgeben)

Dadurch sind solche Dinge sehr einfach zu bewerkstelligen:
http://www.netzmafia.de/skripten/unix/unix5.html hat geschrieben:Die Telefonnummern sollen um dem Text "Tel.: " ergänzt werden. Dazu wird eine weiteres Feature der s-Anweisung verwendet. Auf den regulären Ausdruck kann durch \n Bezug genommen werden. Dabei ist n die Nummer der Gruppe (runde Klammern) im regulären Ausdruck, der den Suchstring definiert.

Bild
In PHP funktioniert das mit dem Befehl preg_replace(), welcher in etwa das Äquivalent zu ReplaceRegularExpression() darstellt, ganz ähnliche, nämlich mit "$1, $2..."

Wird eine ähnliche Zeichenfolge in PB unterstützt?

Wenn nein, dann ist das ein offzieller Featurewunsch ;)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: RegEx - ursprüngliche Gruppe ausgeben

Beitrag von STARGÅTE »

Nein geht leider nicht, da bei ReplaceRegularExpression der ErsatzString$ nicht RegEx betrachtet wird.
Es gwht halt nur intern im Expression selber:

Code: Alles auswählen

If CreateRegularExpression(0, "([abc]).*(\1)")
  Debug ReplaceRegularExpression(0, "aebfad", "-")
Else
  Debug RegularExpressionError()
EndIf
Er sucht also a..a , b..b oder c..c

Ist sehr schade, ich suche auch danach ! habe schon alles probiert er interpretiert es nicht im ErsatzString$

PS: [0-9][0-9]* ist doch vereinfacht [0-9]+ also \d+ ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: RegEx - ursprüngliche Gruppe ausgeben

Beitrag von TomS »

STARGÅTE hat geschrieben:Nein geht leider nicht, da bei ReplaceRegularExpression der ErsatzString$ nicht RegEx betrachtet wird.

:-(
STARGÅTE hat geschrieben:PS: [0-9][0-9]* ist doch vereinfacht [0-9]+ also \d+ ...
Das Beispiel ist von dieser komischen Unixpage, da kann ich auch nichts dafür, dass die ihre RegEx-Regeln nicht können. :lamer:
Little John

Re: RegEx - ursprüngliche Gruppe ausgeben

Beitrag von Little John »

Man kann auch direkt auf die in PB enthaltene PCRE-Bibliothek zugreifen. Dann sollte sowas möglich sein, denke ich. Such doch hier im Forum mal nach
Wörter: PCRE
Autor: edel
Gruß, Little John
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: RegEx - ursprüngliche Gruppe ausgeben

Beitrag von TomS »

Na das sieht doch ganz brauchbar aus.
Mal sehen, ob ich damit klar komme.
http://purebasic.fr/german/viewtopic.ph ... 61#p209861
:allright:
Antworten