![]() |
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:
Ich suche nun nach "mein Text", möchte aber nur die erste Zeile haben da die zweite Zeile ja auskommententiert wurde.
blabla mein Text blabla //möchte ich haben
//blabla mein Text blabla //möchte ich NICHT haben Ich hatte mir etwas in folgender Richtung vorgestellt: [^(//)].*mein Text Das funktioniert aber nicht. Hoffe ihr habt ne Idee. |
Re: RegEx mit Ausschluß
^\w*(?!//).*?$
Zur Not ^ und $ umdrehen, weiß nicht mehr, welches es nun war. |
Re: RegEx mit Ausschluß
Geh auf meine HP lad dir den
![]() 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 ... |
Re: RegEx mit Ausschluß
Zitat:
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:
Ich habe mir mal "The Regex Coach" runtergeladen und folgende RegEx getestet:
blabla mein Text blabla //möchte ich haben
//blabla mein Text blabla //möchte ich NICHT haben (?<!//)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. |
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? |
Re: RegEx mit Ausschluß
Machts doch nicht so kompliziert... Wie wärs damit:
Code:
mfg
^[^/]*mein Text
Christian |
Re: RegEx mit Ausschluß
Zitat:
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. |
Re: RegEx mit Ausschluß
^\w*(?<!//).*?mein Text.*?$
Geht es vielleicht so? |
Re: RegEx mit Ausschluß
Ich werfe mal einen weiteren Vorschlag in die Runde:
Code:
^((?!//).)*dein Text
|
Re: RegEx mit Ausschluß
Zitat:
Zitat:
Code:
@Dax, Khabarakh:
^[^/]*/?[^/]*mein Text
Ich glaube die Delphi-Such-Regexe können keine Look-Aheads, etc. mfg Christian |
Re: RegEx mit Ausschluß
Zitat:
Zitat:
So hab' ich das bisher verstanden: [/] => das Zeichen "/" soll vorkommen [^/] => das Zeichen "/" soll nicht vorkommen Wenn das Zeichen ^ am Anfang der Zeile steht dachte ich das die Zeile mit den nachfolgenden Muster beginnen muß. Das scheine ich ja aber daneben zu liegen. [^/]* Damit kann ich auch nicht so richtig was anfangen. Das Zeichen kann beliebig oft nicht vorkommen??? :? Vielleicht zerlege ich den Ausdruck ja auch falsch. Irgendwie macht das für mich noch keinen Sinn. |
Re: RegEx mit Ausschluß
Soweit hast du es eigentlich richtig verstanden:
Code:
Allerdings - das fällt mir gerade auf: Das macht wieder Probleme, wenn mehr als 1 / drin ist... hm... das ist wirklich schwer, wenn man keine Look-Behinds nehmen darf...
^[^/]*/?[^/]*mein Text
---------------------- ^ - Zeilenanfang [^/]* - beliebig viele Zeichen, die kein / sind /? - zwischendurch darf auch mal ein / kommen [^/]* - wieder beliebig viele Zeichen, die keine / sind mein Text - sollte klar sein mfg Christian |
Re: RegEx mit Ausschluß
Jetzt ists verständlicht, Danke!
Zitat:
Die Wahrscheinlichkeit, dass vor meinem Suchtext 2 / stehen ist relativ gering. Daher hilft mir das schon mal gut weiter. Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz