Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Frage zu regulären Ausdrücken (https://www.delphipraxis.net/97795-frage-zu-regulaeren-ausdruecken.html)

PeterPanino 16. Aug 2007 13:50


Frage zu regulären Ausdrücken
 
Hallo, ich habe eine Frage zu regulären Ausdrücken (ich verwende die Delphi-Implementierung TRegExpr, die auf der allgemein üblichen Perl-Syntax aufbaut):

Vereinfachtes Beispiel: Der reguläre Ausdruck "D+" soll in einer Zeichenkette die Zeichenfolge "D" oder "DD" oder "DDD" usw. nur dann finden, wenn genau davor genau die Zeichenfolge "ABC" steht. D.h. im Suchstring "ABCDDD" soll "DDD" gefunden werden, in "CBADDD" soll "DDD" aber NICHT gefunden werden!

Natürlich kann ich mit dem regulären Ausdruck "ABCD+" die gesamte Zeichenkette "ABCDDD" und dann in dieser in einem nächsten Schritt mit "D+" das "DDD" finden.

Mich würde aber grundsätzlich interessieren, ob es bei regulären Ausdrücken möglich ist, im regulären Ausdruck selbst einen Ausdrucksteil so zu definieren, dass dieser nur als BEDINGUNG funktioniert, d.h. dass der Bedingungsteil zwar zutreffen muss, aber in der gefundenen Zeichenkette nicht enthalten ist.
Wenn man also im regulären Ausdruck "ABCD+" das "ABC" irgendwie als Bedingung definieren könnte, so würde dann damit im Suchstring "ABCDDD" tatsächlich nur die Zeichenkette "DDD" gefunden. Ist das irgendwie möglich?

Gruber_Hans_12345 16. Aug 2007 13:58

Re: Frage zu regulären Ausdrücken
 
Code:
(ABC)(?P<name>D+)
sollte es finden, und die Gruppe mit dem Namen "name" sollte dann das D oder DD oder ... enthalten
dein RegExp muß auch benannte gruppen unterstützen ...

Christian Seehase 16. Aug 2007 14:00

Re: Frage zu regulären Ausdrücken
 
Moin Peter,

auf www.regenechsen.de gibt es ein sehr schönes Tutorial für Einsteiger zum Thema reguläre Ausdrücke.
Vielleicht hilft Dir das schon weiter.

Khabarakh 16. Aug 2007 14:06

Re: Frage zu regulären Ausdrücken
 
Jede Regex Engine, die diesen Namen auch nur annähernd verdient, sollte Lookbehinds unterstützen:
Code:
(?<=ABC)D+
Zumindest anhand der Informationen der TRegExpr-Page würde ich der Komponente diese Bezeichnung verweigern :zwinker: .

PeterPanino 16. Aug 2007 14:58

Re: Frage zu regulären Ausdrücken
 
Vielen Dank an alle für die Informationen! Ich werde mir mal TPerlRegEx und RegexBuddy anschauen. Vor allem letzteres scheint ja ein sehr nützliches Werkzeug zu sein!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz