Datei-Suche mit RexEx - Begriffe ausschließen

German support forum

Moderators: Hacker, Stefan2, white

User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Datei-Suche mit RexEx - Begriffe ausschließen

Post by *Crashguard303 »

Hallo, ich habe schon das Forum durchsucht, aber nichts gefunden.
Ich hoffe, ihr könnt mir helfen.

Es liegt wahrscheinlich nicht am TC, sondern an meinem Verständnis von RegEx.
Ich habe auch im Internet zwei Stunden gesucht, aber die Beispiele habe ich nicht ganz verstanden.

Folgendes:
Wenn ich Datei-Suche mit RegEx durchführe, liefert mir:
(Hänsel)|(Gretel) -> Hänsel ODER Gretel im Dateienamen,
(Hänsel)*(Gretel) -> Gretel alleine und Hänsel und Gretel im Dateienamen

(Das mit dem Punkt und dem Stern habe ich nicht ganz verstanden, und wann es dahinter gehört und wann nicht, also wann man *, wann . und wann man .* schreiben muss.)

Was muss ich eingeben, wenn ich NUR 'Hänsel' finden will, aber OHNE Gretel?
Also, ich will ein Wort einschließen und eins ausschließen

Ich hatte gelesen, ?! würden zur Negation in die Klammern gehören, aber das funktioniert auch irgendwie nicht:

(Hänsel)*(?!Gretel) funktioniert nicht
(Hänsel).*(?!Gretel) funktioniert nicht
(Hänsel).(?!Gretel) funktioniert nicht

Dann gibt es noch das & für UND-Verknüpfung und den ^ zum Negieren, aber wann die eingesetzt werden sollen, verstehe ich auch nicht so ganz.

Ich habe im Internet leider keine gescheiten Anleitung und Beispiele gefunden, dass ich es verstanden habe, sorry.

Und dabei bin ich gelernter Elektroniker und habe Boolesche Algebra gut verstanden, genau wie Mengenlehre in der Mathematik.

Das Problem ist die Formulierung in Regex, in anderen Sprachen könnte ich das.

Solange nehme ich halt das Plugin.
Aber wenn die Suchkriterien komplexer werden, hilft es auch nicht mehr, denn es kann die Regeln ja nur seriell oder/und verknüpfen.

P.S.: Am leichtesten wäre es, wenn es die "Fernglas"-Suchoptionen doppelt gäbe, einschließende Suche nach Name und Ihnhalt, und das Ganze auch mit auszuschließebnden Namen und Inhalten im selben Fenster.
Dann könnte man schnell was eingeben.


lG,
Crashguard
Last edited by Crashguard303 on 2011-11-30, 21:34 UTC, edited 1 time in total.
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Hänsel und Gretel gibt es eben nur gemeinsam. ;-)
User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Post by *Crashguard303 »

Na, da hat der Hänsel aber nochmal Glück gehabt ;)

Was ich auch noch weiß, ist, dass /i ein Ergebnis invertieren kann, aber '/i' muss dann wohl dahinter oder sowas.
Komische Sprache, die Operatoren hinter einen Operanden haben will.

Ich raff's nicht.

In allen möglichen BASIC-Varianten, C, PASCAL, COBOL, Lua Javascript oder soagr in Excel könnte ich das programmieren, einen String durchsuchen mit Inhalt 'x' aber ohne Inhalt 'y'.

Vielleicht muss ja auch Gretel nach vorne?
Frau zuerst oder so ? ;)
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Also ernsthaft:
Unter "Dateien suchen" > "Plugins" kannst du 2 Regeln hinzufügen:
"TC" "Name" "RegEx" "Hänsel"
"TC" "Name" "!RegEx" "Gretel"
ist nicht das was du gefragt hast aber das was du Suchst. ;-)

Mit RegEx etwas "nicht" finden also auszuschließen ist offensichtlich etwas schwerer: (Lookaheads oder Lookbehinds nötig - weiß nicht ob die TC unterstützt...)
http://www.google.de/search?q=RegEx+bestimmtes+Wort+ausschlie%DFen
http://www.regular-expressions.info/lookaround.html
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Der richtige Ausdruck (den TC nicht unterstützt) wäre wahrscheinlich:
(?!Gretel).*(Hänsel).*(?!Gretel)
User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Post by *Crashguard303 »

Ja, ungefähr so, wie Du geschrieben hast, müsste es eigentlich gehen, tut es aber nicht.

Ich hab langsam das Gefühl, der TC ignoriert Invertierungen, also wie Du sagst, wird nicht unterstützt.

Habe es schon mit einem einzelnen Buchstaben versucht... damit die Klammern wegfallen. Kein Erfolg.

Mit dem TC Scripten klappt's, das war auch schnell zu machen.
User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Post by *Crashguard303 »

Also, selbst wenn man alles, was G enthält, ausschließen will (?!G) müßte es sein, das haut nicht hin.
Normal müsste der dann alles anzeigen, außer wo ein G drin ist.

Dann wird es wohl nicht unterstützt.

Trotzdem danke, dann nehme ich halt das Script erst mal.
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Crashguard303 wrote:Ja, ungefähr so, wie Du geschrieben hast, müsste es eigentlich gehen, tut es aber nicht.

Ich hab langsam das Gefühl, der TC ignoriert Invertierungen, also wie Du sagst, wird nicht unterstützt.
Das Problem ist das nicht jede RegEx Engine alle RegEx Ausdrücke unterstützt. Soweit ich weiß nutzt der TC eine nicht so umfassende Engine.

Aber meiner Meinung ist es eher seltener einen RegEx Ausdruck zu suchen und einen anderen RegEx Ausdruck auszuschließen. (Wenn du ihn wirklich häufig brauchst kannst du die Suche speichern)

Ansonsten kommt man beispielsweise auch ohne RegEx: "*Hänsel*|*Gretel*" sehr weit.
User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Post by *Crashguard303 »

Das stimmt wohl.

Bin trotzdem froh, dass der TC so etwas kann, die Windows-Suche (gerade die von XP und älter) hat nicht so viel drauf.
regex
Junior Member
Junior Member
Posts: 39
Joined: 2007-07-19, 07:30 UTC

Post by *regex »

Ganz ohne RegEx:

*Hänsel* | *Gretel*

Gruß
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Hatte ich auch: :wink:
Samuel wrote:Ansonsten kommt man beispielsweise auch ohne RegEx: "*Hänsel*|*Gretel*" sehr weit.
regex
Junior Member
Junior Member
Posts: 39
Joined: 2007-07-19, 07:30 UTC

Post by *regex »

Samuel wrote:Hatte ich auch: :wink:
Stimmt, hätte ich wohl richtig lesen sollen :D
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50641
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Der richtige Ausdruck zum Finden von Hänsel ODER Gretel ist
(Hänsel|Gretel)
Author of Total Commander
https://www.ghisler.com
User avatar
Crashguard303
Junior Member
Junior Member
Posts: 61
Joined: 2011-11-30, 21:02 UTC
Location: Deutschland

Ja, aber...

Post by *Crashguard303 »

Ja, das hatte ich auch schon getestet, Herr Ghisler, aber ich wollte doch Hänsel OHNE Gretel.

Ganz konkret:
Ich habe ein Musikarchiv mit Musik in verschiedenen Formaten und vielen Unterverzeichnissen.
Jetzt möchte ich alle .MP3, .WMA und .AAC und was es sonst noch so gibt, kopieren, um sie in .FLAC umzuwandeln.
Also alle Dateien außer .FLAC

Die .flac-Dateien brauche ja bei der Kopier-Aktion nicht, weil sie ja schon umgewandelt wurden.

Ein anderes Beispiel für Suche mit ein- und ausschließender Suche: Ein Musikstück von einem Künstler, aber KEINE Neuinterpretation oder Remix.
Wenn der Zusatz "Original" fehlt, ist man darauf angewiesen, nach nicht-Remix zu suchen.

Aber wie gesagt, wenn das über RegEx nicht geht, mache ich es über die Script-Suche.

Regex hätte den Vorteil, dass es ein einzeiliger Such-Ausdruck ist, denn man speichern könnte, um ihn Beispielsweise in einer Textdatei zu sichern.
Er kann dann später über Copy-and-Paste wieder eingefügt werden, oder über ein Hotkey-Script mittels Tastendruck.

Dies ist bei der Script-Suche mit Regeln komplizierter, da sie aus mehreren Menüs aufgebaut wird, jede Regel ein extra Fenster.
Für einen Hotkey-Programm wären das mehrere Befehle.
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Re: Ja, aber...

Post by *Samuel »

Crashguard303 wrote:Ganz konkret:
Ich habe ein Musikarchiv mit Musik in verschiedenen Formaten und vielen Unterverzeichnissen.
Jetzt möchte ich alle .MP3, .WMA und .AAC und was es sonst noch so gibt, kopieren, um sie in .FLAC umzuwandeln.
Also alle Dateien außer .FLAC
Was spricht denn gegen "*.MP3 *.WMA *.AAC | *.FLAC" (ohne RegEx)
Crashguard303 wrote:Ein anderes Beispiel für Suche mit ein- und ausschließender Suche: Ein Musikstück von einem Künstler, aber KEINE Neuinterpretation oder Remix.
Wenn der Zusatz "Original" fehlt, ist man darauf angewiesen, nach nicht-Remix zu suchen.
Was spricht denn gegen "*Künstler* | *Remix*" (ohne RegEx)
Crashguard303 wrote:Regex hätte den Vorteil, dass es ein einzeiliger Such-Ausdruck ist, denn man speichern könnte, um ihn Beispielsweise in einer Textdatei zu sichern.
Er kann dann später über Copy-and-Paste wieder eingefügt werden, oder über ein Hotkey-Script mittels Tastendruck.

Dies ist bei der Script-Suche mit Regeln komplizierter, da sie aus mehreren Menüs aufgebaut wird, jede Regel ein extra Fenster.
Für einen Hotkey-Programm wären das mehrere Befehle.
Genau aus diesem Grund gibt es intern im TC:
Unter "Dateien suchen" > "Laden/Speichern". Diese gespeicherte Suche kannst du später bequem über die Buttonbar öffnen. (LOADSEARCH)
Post Reply