Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RegEx mit Ausschluß (https://www.delphipraxis.net/99987-regex-mit-ausschluss.html)

VizeTE 20. Sep 2007 16:19


RegEx mit Ausschluß
 
Hallo zusammen,

in der Delpi-IDE gibt es ja im Menü unter "Suchen" => "In Dateien suchen" die Möglichkeit via Regexpressions zu suchen.

Nun habe ich Probleme beim formulieren der richtigen Regexpression. Diese soll mir einen Text ausgeben welcher nicht auskommentiert wurde.
Hier mal ein Beispiel

Delphi-Quellcode:
blabla mein Text blabla //möchte ich haben
//blabla mein Text blabla //möchte ich NICHT haben
Ich suche nun nach "mein Text", möchte aber nur die erste Zeile haben da die zweite Zeile ja auskommententiert wurde.

Ich hatte mir etwas in folgender Richtung vorgestellt:
[^(//)].*mein Text

Das funktioniert aber nicht.


Hoffe ihr habt ne Idee.

Dax 20. Sep 2007 16:21

Re: RegEx mit Ausschluß
 
^\w*(?!//).*?$

Zur Not ^ und $ umdrehen, weiß nicht mehr, welches es nun war.

Corpsman 20. Sep 2007 17:28

Re: RegEx mit Ausschluß
 
Geh auf meine HP lad dir den Tokenizer runter

und sag dem das du einen Einzeilenkomemntar hast der mit "//" anfängt

dan jag den String durch und dahinter gibts die Kommentare nicht mehr ;).

[Edit]

Ups sry ich hab mich verlesen ich dachte du brauchst das in nem Programm.

in der Delphi suche wirds dir wohl nichts bringen, auser man kann da die Strings umpipen ...

VizeTE 21. Sep 2007 06:23

Re: RegEx mit Ausschluß
 
Zitat:

Zitat von Dax
^\w*(?!//).*?$

Zur Not ^ und $ umdrehen, weiß nicht mehr, welches es nun war.

Hallo Dax,

das scheint noch nicht ganz da zu sein was ich suche.
Beim nachlesen der Bedeutung des Ausdrucks "(?!//)" bin ich auf was gestoßen was intresssant sein könnte: (?<!…)…

Hier nochmal mein Beispiel von oben:

Delphi-Quellcode:
blabla mein Text blabla //möchte ich haben
//blabla mein Text blabla //möchte ich NICHT haben
Ich habe mir mal "The Regex Coach" runtergeladen und folgende RegEx getestet:

(?<!//)mein Text

Mit diesen Ausdruck wird schon einmal nur der Text gefunden wenn nicht direkt davor die Slashes sind. Stehen diese aber am Anfang der Zeile wird diese Zeil dennoch als Treffer gewertet.
Also müßte ich es irgendwie schaffen zu definieren, dass zwischen den Slashes und dem Suchtext beliebig viele Zeichen stehen können.

Wenn ich das so versuche:

(?<!//).*mein Text

dann funktionierts wieder nicht da dann die gesamte Zeile (bis zum Ende des Suchtextes) als Treffer zurückgegeben wird egal ob Slashes davor stehen oder nicht.

VizeTE 21. Sep 2007 07:02

Re: RegEx mit Ausschluß
 
möglicherweise habe ich die Lösung gefunden:

(?<!(.*//.*))mein Text

Jedoch kommt die Suchfunktion der Delphi-IDE sowie der RegEx Coach nicht damit klar. Mit der Demo des "EditPad Pro" funktionierts aber.
Hat jemand eine Idee wie ich das auch Delphi verständlich machen kann?

r2c2 21. Sep 2007 08:31

Re: RegEx mit Ausschluß
 
Machts doch nicht so kompliziert... Wie wärs damit:
Code:
^[^/]*mein Text
mfg

Christian

VizeTE 21. Sep 2007 12:00

Re: RegEx mit Ausschluß
 
Zitat:

Zitat von r2c2
Machts doch nicht so kompliziert... Wie wärs damit:
Code:
^[^/]*mein Text
mfg

Christian

Ich bin leider (noch) kein RegExp.-Profi aber würde dieser Ausdruck nicht bedeuten das:
1) die Kommentarzeichen am Anfang einer Zeile stehen müssen
2) es auch kein Treffer gibt wenn genau 1 "/" enthalten ist (ist ja kein Kommentar)

Diese Einschränkungen möchte ich nicht in Kauf nehmen sofer es eine andere Möglichkeit gibt.

Dax 21. Sep 2007 12:20

Re: RegEx mit Ausschluß
 
^\w*(?<!//).*?mein Text.*?$

Geht es vielleicht so?

Khabarakh 21. Sep 2007 12:41

Re: RegEx mit Ausschluß
 
Ich werfe mal einen weiteren Vorschlag in die Runde:
Code:
^((?!//).)*dein Text

r2c2 21. Sep 2007 13:43

Re: RegEx mit Ausschluß
 
Zitat:

Zitat von VizeTE
Ich bin leider (noch) kein RegExp.-Profi aber würde dieser Ausdruck nicht bedeuten das:
1) die Kommentarzeichen am Anfang einer Zeile stehen müssen

Nö, das passt schon so.

Zitat:

2) es auch kein Treffer gibt wenn genau 1 "/" enthalten ist (ist ja kein Kommentar)
Gut, das stimmt. Korrektur:
Code:
^[^/]*/?[^/]*mein Text
@Dax, Khabarakh:
Ich glaube die Delphi-Such-Regexe können keine Look-Aheads, etc.

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
Seite 1 von 2  1 2      

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