Komplexe Suche mit regular expression [ERLEDIGT]

Alles rund um Editoren, visuelle Entwicklungshilfen und Form-Designer

Moderator: Moderatoren

Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Komplexe Suche mit regular expression [ERLEDIGT]

Beitrag von Markus Walter »

Hi,

vielleicht kann mir jemand helfen... Mein Editor (Ed4Win) kann eine komplexe Suche mit Hilfe von regular expressions. Und offenbar nur so...

Ich möchte eigentlich nix kompliziertes - über google wäre es ganz einfach :wink:

Ich möchte im Quelltext das Vorkommen einer Funktion xTest finden, wenn diese mit Parametern aufgerufen wird, aber nicht, wenn sie ohne Parameter aufgerufen wird. Also quasi (in google-Manier): "+xtest - xtest()".

Weiß jemand, wie man sowas mit einer regular expression hinkriegt?
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Tom »

Auch ich würde mich über eine Antwort freuen. MultiEdit unterstützt RegEx ebenfalls, aber ich sitze regelmäßig vor den Erläuterungen und versuche, sie zu verstehen, um dann doch wieder "klassisch" zu suchen. :oops:
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Wolfgang Ciriack »

Ich würde es mal mit
test(+[a-z]+)
versuchen.
Viele Grüße
Wolfgang
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

Hi,

@Tom: Hm, speziell von Dir hatte ich eine Antwort erhofft, weil Du ja mal in einem Thread speziell die RegEx-Funktion Deines Editors gepriesen hast... :wink:

Code: Alles auswählen

test(+[a-z]+)
@Wolfgang: Der Ausdruck findet z. B. Strings, in denen "test" vorkommt, ausser wen an den String "test" direkt eine Klammer anschliesst... Aber das ist ja nicht das, was ich brauche...

Speziell die Tatsache, dass ich nach Funktionsaufrufen suche und dabei die Klammern eine Rolle spielen, macht das Ganze komplizierter, da Klammern bei RegEx-Ausdrücken gewisse Funktionen haben...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Martin Altmann »

Markus,
dann musst Du die Klammern "escapen"!
Beispiel:

Code: Alles auswählen

test\(+[a-z]+\)
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

Hi Martin,

guter Hinweis. Danke. Wenn Du jetzt noch weisst, wie ich quasi negiere (siehe meine obige Anforderung), würde ich Dich in mein Nachtgebet einschließen...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Martin Altmann »

Vielleicht die Zeichen in ^ einschließen... :?:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

Oh Mann, RegEx ist eine ziemliche Katastrophe, wenn man viel mit "Sonderzeichen" zu tun hat (Klammern, Anführungszeichen, ...)

Warum kann mein Editor nicht eine einfache Notiation wie alle Suchmaschinen... :banghead:

Mein aktueller Fall:

Code: Alles auswählen

xTest() - soll nicht gefunden werden
xTest(xVar) - soll gefunden werden
xTest("Hugo") - soll gefunden werden
xTest({..}) - soll gefunden werden
Das ist mit RegEx nicht wirklich lustig. Ich glaube, ich gebe es auf...
Aber trotzdem danke.
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Martin Altmann »

Hmm,

Code: Alles auswählen

xTest\(.*\)
Wenn das auch xTest() liefert, dann vielleicht:

Code: Alles auswählen

xTest\(..*\)
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Wolfgang Ciriack »

Also in meinem brief-Editor klappt es mit

Code: Alles auswählen

xtest([~)]
Das findet
xtest("Hugo")
xtest(xVar)
xtest({b})
aber nicht xtest()
Viele Grüße
Wolfgang
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

@Martin+Wolfgang: Auch diese Vorschläge funktionieren nicht, liefern aber unterschiedliche Ergebnisse..

@Wolfgang: Komisch, dass das bei Dir klappt, aber bei mir nicht?! Ich kann in meinem Editor 4 verschiedene "Regular Expression Dialect"s einstellen. Bei "Posix", "ED" und "ED Org" wird Dein Vorschlag als nicht regelkonform abgewiesen, bei "MS Visual Developer RE" lässt er sich ausführen, findet aber nur xTest() und eben gerade nicht xTest(xValue) oder xTest("Hugo"). Ich müsste den Ausdruck also ggf. verneinen...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von brandelh »

Hi,

mein MED findet mit Martins: ctest\(+[a-z]+\)

alle cTest(???) - also mit Inhalt, aber keine cTest() - nun soll aber genau das Gegenteil gesucht werden, wie kann man das mit ^ negieren. Damit habe ich keinen Erfolg.
Wolfgangs Ausdruck: ctest([~)] gibt bei mir aber einen Klammerfehler, ctest([~)]) findet nichts.
Markus Walter hat geschrieben:findet aber nur xTest() und eben gerade nicht xTest(xValue) oder xTest("Hugo"). Ich müsste den Ausdruck also ggf. verneinen...
MED: ctest\(+[a-z]+\) findet cText(egal was) aber nicht cText() !
Gruß
Hubert
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

brandelh hat geschrieben:MED: ctest\(+[a-z]+\) findet cText(egal was) aber nicht cText() !
Negativ. Das findet bei mir zwar xTest(xValue), aber nicht xTest("Hugo"). Wohl wegen des Anführungszeichen, das müsste wohl noch in die Auflistung a-z (und ggf. noch weitere, z. B. der Unterstrich). Bei so einer Notation läuft man also doch Gefahr, "Sonderfälle" zu übersehen...

Kennt jemand wenigstens eine gute Dokumentation über die RegEx?
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Wolfgang Ciriack »

Ich wusste ja schon immer, dass mein 20 Jahre alter brief-Editor gut ist :wink: :D

Ich hab noch mal nachgesehen, der verwendet eine brief-eigene regular expression Suche :(
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von brandelh »

Hallo Markus,

stimmt das " wurde ausgespart, daher habe ich das versucht und es hat auch die cTest("Egon") gefunden:

Code: Alles auswählen

ctest\(+["-z]+\)
findet bei mir im MED:

cTest([Egal])
cTest('Egal')
cTest("Egal")
Gruß
Hubert
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

brandelh hat geschrieben:stimmt das " wurde ausgespart, daher habe ich das versucht und es hat auch die cTest("Egon") gefunden:

Code: Alles auswählen

ctest\(+["-z]+\)
findet bei mir im MED:

cTest([Egal])
cTest('Egal')
cTest("Egal")
Schon viel besser, aber noch immer nicht perfekt...
Findet z. B. eine Stelle wie: wTest()+cValue oder wIrgendwas(wTest()), d. h. die runde Klammer zu und das Plus-Zeichen liegen wohl zwischen ["-z]...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von brandelh »

Na du bist aber anspruchsvoll ;-)

Wenn es viel Text ist und die Bedingung zu übel hilft nur ein kleines Programm, das die betreffenden Zeilen ausfiltert.
Ich nehme dazu dann PowerBasic ConsoleCompiler ;-)
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Wolfgang Ciriack »

Was macht denn

Code: Alles auswählen

ctest\(+["-z^\)]
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Tom »

Hier findet man u.a. ausführliche Erklärungen zu RegEx:

http://wiki.multiedit.com

(nach "Regular Expressions" suchen)
Herzlich,
Tom
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

Wolfgang Ciriack hat geschrieben:Was macht denn

Code: Alles auswählen

ctest\(+["-z^\)]
Das findet bei mir auch wieder xTest(), neben denen, die es finden sollte...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression

Beitrag von Wolfgang Ciriack »

Und

Code: Alles auswählen

ctest\(+["-z][^\)]
?
Viele Grüße
Wolfgang
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression

Beitrag von Markus Walter »

Hi Wolfgang,

findet weniger Stellen als das vorherige, aber immernoch die wTest()...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression [ERLEDIGT]

Beitrag von Markus Walter »

Hi,

es ist eigentlich ganz einfach... (wie immer wenn man es weiß) :D

Code: Alles auswählen

wTest\(~\)
Das ~-Zeichen negiert, somit wird mit o. a. Syntax kein wTest() gefunden, sehr wohl aber Aufrufe mit Parameter. Problematisch wären jetzt noch Leerzeichen, z. B. wTest( ). Aber da bin ich beim Codieren recht ordentlich...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Komplexe Suche mit regular expression [ERLEDIGT]

Beitrag von brandelh »

Markus Walter hat geschrieben:Problematisch wären jetzt noch Leerzeichen, z. B. wTest( ). Aber da bin ich beim Codieren recht ordentlich...
wenn nicht, könnte man das aber ja auch ganz einfach mit Suchen & Ersetzen korrigieren ;-)
xyz( ) -> xyz() -> wiederholen, bis nichts mehr gefunden wird :D
Gruß
Hubert
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Komplexe Suche mit regular expression [ERLEDIGT]

Beitrag von Markus Walter »

Hi,

klar Hubert, wenn man es denn weiß...

Ich möchte einiges an Code-Refactoring betreiben. Hier bieten moderne IDEs mächtige Möglichkeiten (z. B. Eclipse). Zumindest brauche ich eine verlässliche Suchmöglichkeit, sonst kann ich ja auch kein Suchen+Ersetzen betreiben...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Antworten