Textsuche in Archiven

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Textsuche in Archiven

Post by *phantom »

Hallo,

ich versuche über Textsuche Dokumente zu finden die eine vage Zeichenfolge enthalten. Da ich nicht genau weiß wie lang die Zeichenkette ist, habe die Option "Reg.Ausdruck" aktiviert. Ich suche erst einmal nach 6 stelligen Zeichenketten.

Text suchen: #?????

Statt der genannten Archive, erhalte ich eine Fehlermeldung.

[img]http://s1.directupload.net/images/140411/wlymr8h2.jpg[/img]

Er gibt die Meldung einen Sinn? Funktioniert die Suche nicht mit Platzhaltern ? (Platzhalter für ein Zeichen "?")

Ich nutze TC 8.51 RC2 x64!
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Post by *milo1012 »

Sehe ich richtig dass du wirklich nach fünf "Platzhaltern" in Folge suchen willst?
Also wenn du wie bei Kommandozeilen-Wildcards ein beliebiges Zeichen meinst, musst du für RegEx stattdessen einen Punkt nehmen:

Code: Select all

#.....
oder verkürzt:

Code: Select all

#.{5}

Wenn du aber tatsächlich Fragezeichen nehmen wolltest müsstest du diese jeweils "escapen", also maskieren, da es eine Bedeutung als RegEx-Syntaxzeichen hat (Quantor).

Code: Select all

#\?\?\?\?\?
Das erklärt auch die Fehlermeldung (fünf Quantoren hintereinander).
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Hi,

ich suche nicht nach Platzhaltern (Wildcards) ich suche nach einer Zeichenkette.
Für mich gehören folgende Zeichen zu dem Begriff "Reg.Ausdruck": * ? ^ () [] {} + - $

* steht für eine beliebige Zeichenkette
? steht für genau ein beliebiges Zeichen
In dem Zusammenhang ist für mich ein "Leerzeichen" kein Zeichen.

Die Suche nach dem Text: #??? sollte z.B. Archive finden in denen ein Dokument die Zeichenkette #Kfz enthält

Wenn ich dich richtig verstehe steht ein "." für ein beliebiges Zeichen dazu gehört auch ein "Leerzeichen" und wenn ich nach einer Zeichenkette
suchen möchte die einen Punkt enthält muss ich "\." eingeben.

Was muss ich eingeben, wenn ich "Leerzeichen" bei der Suche ausklammern möchte?
User avatar
Dalai
Power Member
Power Member
Posts: 9975
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

phantom wrote:Für mich gehören folgende Zeichen zu dem Begriff "Reg.Ausdruck": * ? ^ () [] {} + - $
Korrekt.
* steht für eine beliebige Zeichenkette
? steht für genau ein beliebiges Zeichen
Falsch, jedenfalls in Verbindung mit RegEx. In RegEx ist der Punkt für genau ein beliebiges Zeichen verfügbar und der Punkt mit einem unmittelbar nachfolgenden Quantifier (Stern oder Plus oder Iteratoren wie {n}) für eine beliebige Zeichenkette.

Schau dir mal die TC-Hilfe zu regulären Ausdrücken genauer an, dort sind auch Beispiele zu finden.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Die TC-Suche ist eine Wissenschaft für sich. In der TC-Hilfe zu Reg.Ex werden Begriffe verwendet die ich noch nie gehört habe.

Hier wären deutlich mehr Beispiele zu den Kombinationsmöglichkeiten zwischen Zeichenklassen, Metazeichen, Iterationen... sinnvoll.

Für mein Beispiel habe ich folgendes mal probiert: #.{3}\b

allerdings werden auch Texte mit 3 stelligen Zeichenketten aufgelistet. Das heißt doch nicht genau 3 Zeichen wie in der Hilfe ({n} Zeichen kommt genau n-mal vor).
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Sorry, aber ich verstehe nicht alle Details die in der Hilfe aufgelistet sind. Mir fehlen einfach noch ein paar Beispiele.

Folgende Einstellungen scheinen die Suche zu präzisieren:

Suchen nach: *.doc

Suchen in: "Suchordner"

Archive durchsuchen: aktiviert

Text suchen: #.{6}

Reg.Ausdruck: aktiviert


Die Option ganze Wörter hilft hier nicht weiter da durch das Metazeichen "." auch Leerzeichen wie ein Buchstabe oder eine Zahl behandelt werden.

Ich habe herumexperimentiert mit Worttrennzeichen "\s", "\S" und Wortgrenze "b" funktioniert aber nicht wirklich.

Was ich suche sind Zeichenketten unterschiedlicher Länge (max. 8 Zeichen) z.B. #Kfz, #Kfz2, #Kfzab. Die Zeichenkettenlänge wird begrenzt durch ein Leerzeichen.

Wenn ich die Textsuche mit der max. Zeichenlänge 8 beginne, sollen auch nur die Dokumente aufgeführt werden die genau dieser Zeichenkettenlänge entsprechen.
Also nicht auch Dokumente die bsw. die Zeichenkette #Kfz (4 Zeichen) enthält.

Kann mir vielleicht jemand die Lösung nennen oder versagt hier die Textsuche?
User avatar
Dalai
Power Member
Power Member
Posts: 9975
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Prüf erstmal mit dem Lister und dessen Suche (mit RegEx natürlich), ob überhaupt deine gewünschten Suchbegriffe enthalten sind. DOC-Dateien sind nämlich etwas speziell, weil sie keine normalen Textdateien sind.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Die Suche nach einer bekannten Zeichenkette funktioniert problemlos. Das Problem liegt nicht am Objekt in dem gesucht werden soll. Schwierigkeiten macht das Leerzeichen nach der Zeichenkette.
User avatar
Dalai
Power Member
Power Member
Posts: 9975
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

phantom wrote:Schwierigkeiten macht das Leerzeichen nach der Zeichenkette.
Und diese Schwierigkeiten hast du im Lister nicht?

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Doch, auch hier behandelt die Reg.Ex-Suche das Leerzeichen als beliebiges Zeichen für das Metazeichen "."

Das heißt es werden z.B. bei der Textsuche: #.{6} auch Dokumente mit "#Kfz ABC gefunden.
User avatar
Dalai
Power Member
Power Member
Posts: 9975
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Deswegen ja mein Vorschlag, es erstmal im Lister zu probieren, um den passenden/notwendigen RegEx zu ermitteln. Der Punkt steht nunmal für ein beliebiges Zeichen (alles außer Zeilenumbruch). Du musst schon die Zeichen weiter eingrenzen, wenn du Leerzeichen ausschließen willst, entweder mit Zeichenklassen (z.B. [a-z0-9]), negierten Zeichenklassen (z.B. [^\ ]) oder ähnlichen Angaben.

Mit

Code: Select all

#.{6}
sagst du doch, du willst ein Sharp, gefolgt von 6 beliebigen Zeichen haben. Und natürlich werden damit auch Strings gefunden, die nach den 6 beliebigen Zeichen noch weitere Zeichen haben. Also musst du weiter eingrenzen oder ausschließen: Verzicht auf den Punkt zur Angabe für beliebige Zeichen, negative Zeichenklassen und/oder Angaben darüber, was nach den 6 beliebigen Zeichen folgen kann/soll/muss.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
phantom
Power Member
Power Member
Posts: 683
Joined: 2003-11-21, 15:34 UTC

Post by *phantom »

Danke Dalai,

mir war nicht klar, dass man Zeichenklassen einfach so zusammensetzen kann - ohne Punkt und Komma.

Text suchen: #[a-z0-9]{7}\s - liefert jetzt das gewünschte Ergebnis.
User avatar
Dalai
Power Member
Power Member
Posts: 9975
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Beachte aber, dass [a-z0-9] nur nach Kleinbuchstaben und Zahlen/Ziffern sucht; Großbuchstaben sind nicht dabei. Wenn die ebenfalls enthalten sein dürfen/sollen:

Code: Select all

#[A-Za-z0-9]{7}\s
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Post Reply