Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   suche via Regulärer Ausdruck (https://www.delphipraxis.net/181992-suche-via-regulaerer-ausdruck.html)

bernhard_LA 23. Sep 2014 14:20

suche via Regulärer Ausdruck
 
ich möchte über die Option Reguläre Ausdrücke nach allen Funktionen in meinem Projekt suchen
die als Aufrufparameter eine TQuery und einen String verwenden


Delphi-Quellcode:
^(  * [TQuery] * [;] * [String] )$

Mikkey 23. Sep 2014 14:40

AW: suche via Regulärer Ausdruck
 
Code:
^function .*\(.*TQuery.*\;String.*\)\:
Wie es unabhängig von der Reihenfolge geht, weiß ich aus dem Kopf nicht, aber da kann man auch zweimal suchen.

Dejan Vu 23. Sep 2014 15:06

AW: suche via Regulärer Ausdruck
 
'^function' wird nicht klappen, wenn whitespaces dazwischen sind. Das Caret einfach weglassen.

bernhard_LA 24. Sep 2014 10:57

AW: suche via Regulärer Ausdruck
 
Delphi-Quellcode:
^(*(?i)TQuery*(?i)String*)*;$


sollte eigentlich alle Strings mit Klammer auf ( , dann irgendetwas, Schlüsselwort TQuery, dann wieder irgendetwas bis zum Schlüsselwort String, zum Schluss das Ende des Parameter Aufrufes ');)' finden;


leider findet er keine Matches in meinen Source Code, was mache ich falsch ?

Dalai 24. Sep 2014 11:27

AW: suche via Regulärer Ausdruck
 
Es gibt nunmal bestimmte Zeichen, die bei regulären Ausdrücken eine Sonderbedeutung haben. In diesem Fall sind es vor allem die Klammern, die zur Gruppierung dienen. Wenn du tatsächlich nach einer Klammer suchen willst, musst du diese maskieren, d.h. einen Backslash davorsetzen.

Außerdem: ein Stern ist nur ein Quantifier, d.h. er sucht nach einer beliebigen Anzahl des direkt davor stehenden Zeichens/Ausdrucks. Da du aber kein Zeichen davor stehen hast, ist der Ausdruck so nicht gültig. Eine beliebige Anzahl eines beliebigen Zeichens/Ausdrucks wird bei RegEx durch
Code:
.*
bzw.
Code:
.+
repräsentiert (der Stern kann auch Null bedeuten, das Plus mindestens Eins).

Nach Ausbessern der beiden Punkte kommt dies heraus:
Code:
^\(.*(?i)TQuery.*(?i)String.*\).*;$
Ich weiß aber nicht, ob das nun passt oder ob da noch mehr Problempunkte drin sind (könnte mir vorstellen, dass das case-insensitive Pattern (?i) nicht ganz passt).

MfG Dalai

Mikkey 24. Sep 2014 15:59

AW: suche via Regulärer Ausdruck
 
Zitat:

Zitat von Dalai (Beitrag 1273633)
Nach Ausbessern der beiden Punkte kommt dies heraus:
Code:
^\(.*(?i)TQuery.*(?i)String.*\).*;$

Die Folge
Code:
^\(
sucht nach einer Klammer-Auf am Zeilenbeginn, das dürfte kaum so gewollt sein.

Mit der Angabe

Zitat:

... Ende des Parameter Aufrufes
weiß ich allerdings nun gar nicht mehr, was eigentlich das Ziel ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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