[BUG] - Fehler bei der Implementierung von Reg.Expr. im TC!
Moderators: white, Hacker, Stefan2
Ich benutze auch die Version 6.54a (unter Windows 98, aber ob das eine Rolle spielt ???). Ich habe nichts weiter gemacht, als den Text aus deinem ersten Posting in diesem Thread in 2 Textdateien zu kopieren. Ich habe das jetzt 3 mal wiederholt, und komme immer zum selben Ergebnis. Ich hatte nur "Reg.Ausdruck (RegEx 2)" angehakt, sonst nichts.
Wenn ich jetzt zusätzlich "nur ganze Wörter" anhake, findet der TC mit dem Suchausdruck (abb\s+){2}. oder (abb\s+){2}[az] bei mir keine der beiden Dateien.
Gruß, Jürgen
Wenn ich jetzt zusätzlich "nur ganze Wörter" anhake, findet der TC mit dem Suchausdruck (abb\s+){2}. oder (abb\s+){2}[az] bei mir keine der beiden Dateien.
Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
Also das habe ich jetzt auch noch einmal gemacht.
1) Einen Ordner aufgemacht
2) den Inhalt des ersten Postings in 2 Textdateien kopiert
3) Suche mittels '(abb\s+){2}.'
Ergebnis: Beide Dateien werden angezeigt.
Das gleiche habe ich wiederholt mit '(abb\s+){2}[az]'. Gleiches Ergebnis. Beide Dateien werden angezeigt.
Auch bei mir wird gar nichts mehr angezeigt, wenn ich "nur ganze Wörter" ankreuze.
Stimmt das mit Deinen Ergebissen überein?
1) Einen Ordner aufgemacht
2) den Inhalt des ersten Postings in 2 Textdateien kopiert
3) Suche mittels '(abb\s+){2}.'
Ergebnis: Beide Dateien werden angezeigt.
Das gleiche habe ich wiederholt mit '(abb\s+){2}[az]'. Gleiches Ergebnis. Beide Dateien werden angezeigt.
Auch bei mir wird gar nichts mehr angezeigt, wenn ich "nur ganze Wörter" ankreuze.
Stimmt das mit Deinen Ergebissen überein?
Ja.divejbba wrote:Stimmt das mit Deinen Ergebissen überein?
OT: Jetzt wird "Kroko" gekuckt (ARD). Unbedingt sehenswert!
Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
- ghisler(Author)
- Site Admin
- Posts: 48097
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
OK, ich versuche mal das zu erklären. Die Suche geht nach
(abb\s+){2}
Das bedeutet: Die Zeichen "abb" gefolgt von einem Worttrennzeichen - das Ganze 2 mal.
Der Reguläre Ausdruck sagt dabei NICHT, was vor oder nach dem zu findenden Text kommen soll. Deshalb wird einfach nur "abb abb " gefunden, EGAL, ob noch ein drittes "abb " dahinter kommt, oder irgend etwas anderes!
Wenn man das verhindern will, muss man explizit schreiben, was dahinter kommen soll, etwa ein $ für das Zeilenende. Leider kann man mit regulären Ausdrücken nicht schreiben, dass vor und nach dem Ausdruck kein "abb" kommen darf. Was fehlt ist ein expliziter NICHT-Operator über mehrere aufeinanderfolgende Zeichen. es gibt zwar [^a] (alles ausser ein a), aber [^a][^b][^b] ist falsch, weil es z.B. auch abc verbietet. Hier wäre also eine Erweiterung regulärer Ausdrücke erforderlich.
Wozu ist dann ein Operator wie {2} überhaupt gut? Er nützt nur dann, wenn man weiss, was vor und nach den repetierten Zeichen kommt.
Der Ausruck
f (abb\s+){2}b
findet z.B. den ersten String "adf abb abb abb bla" NICHT, ein Ausdruck
f (abb\s+){3}b
jedoch schon.
(abb\s+){2}
Das bedeutet: Die Zeichen "abb" gefolgt von einem Worttrennzeichen - das Ganze 2 mal.
Der Reguläre Ausdruck sagt dabei NICHT, was vor oder nach dem zu findenden Text kommen soll. Deshalb wird einfach nur "abb abb " gefunden, EGAL, ob noch ein drittes "abb " dahinter kommt, oder irgend etwas anderes!
Wenn man das verhindern will, muss man explizit schreiben, was dahinter kommen soll, etwa ein $ für das Zeilenende. Leider kann man mit regulären Ausdrücken nicht schreiben, dass vor und nach dem Ausdruck kein "abb" kommen darf. Was fehlt ist ein expliziter NICHT-Operator über mehrere aufeinanderfolgende Zeichen. es gibt zwar [^a] (alles ausser ein a), aber [^a][^b][^b] ist falsch, weil es z.B. auch abc verbietet. Hier wäre also eine Erweiterung regulärer Ausdrücke erforderlich.
Wozu ist dann ein Operator wie {2} überhaupt gut? Er nützt nur dann, wenn man weiss, was vor und nach den repetierten Zeichen kommt.
Der Ausruck
f (abb\s+){2}b
findet z.B. den ersten String "adf abb abb abb bla" NICHT, ein Ausdruck
f (abb\s+){3}b
jedoch schon.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
2ghisler(Author):
Danke für die Erklärung, die so gut ist, dass sie fast ohne Änderung in die TC-Hilfe übernommen werden kann.
Vorerst habe ich mal im Wiki einen Link hierher gesetzt.
Gruß, Jürgen
Danke für die Erklärung, die so gut ist, dass sie fast ohne Änderung in die TC-Hilfe übernommen werden kann.
Vorerst habe ich mal im Wiki einen Link hierher gesetzt.
Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
- ghisler(Author)
- Site Admin
- Posts: 48097
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Was hat das mit "nur ganze Wörter" zu tun? "abb abb" ist ja ein ganzes Wort in dem Sinne, dass es vorne und hinten von Worttrennzeichen abgetrennt ist! "abb abb abb" würde also trotzdem gefunden werden. Der RegEx-Standard gibt einfach nicht mehr her...
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com