Umbenenn-Tool: Wie alle Punkte durch Leerstellen ersetzen?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
Minotaurus
Junior Member
Junior Member
Posts: 4
Joined: 2006-12-13, 11:24 UTC

Umbenenn-Tool: Wie alle Punkte durch Leerstellen ersetzen?

Post by *Minotaurus »

Reguläre Ausdrücke / Warum funktioniert dieser eine nicht?

Hallo miteinander,

wenn ich diesen Ausdruck \.(?![^.]*$) für Dateinamen mit dem Aufbau "part1.part2.part3.partn.ext" einsetze, erhalte ich einen Fehler. Woran mag das liegen? Bin für jede Hilfe dankbar.
User avatar
Clas Hortien
Senior Member
Senior Member
Posts: 200
Joined: 2003-03-03, 15:03 UTC

Post by *Clas Hortien »

Hallo,

was möchtest Du denn erreichen ? Soll der Part1 oder der PartN mit Extension übrigbleiben ? Oder ?

Gruß

Clas
#14041
Minotaurus
Junior Member
Junior Member
Posts: 4
Joined: 2006-12-13, 11:24 UTC

Post by *Minotaurus »

Hallo Clas,

mein Ziel ist, alle Punkte bis auf den vor der Erweiterung durch Leerstellen zu ersetzen, soll heißen aus "part1.part2.ext" wird "part1 part2.ext". Der Ausdruck ist korrekt, wie ich durch Versuche bspw. mit RegEx und anderen Tools festgestellt habe.

Viele Grüße

Michael
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

Hi Michael,
diese Frage gab es hier mindestens schon 1x im Forum.

Ich glaube das Leichteste war
die Umbenennung in drei Schritten durchzuführen:

1.)
Original umbenennen zu: [N] #[E]
Start
Neu einlesen-Knopf (links neben Start)

2.)
Das #-Zeichen bei [N] #[E] entfernen.
Suche: . (Punkt)
Ersetzen: Blank
Start
Neu einlesen

3.)
Suche: Blank#
Ersetzen: . (Punkt)
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

If someone is interested

i have tested this example with Siren:

with the syntax
%b[1,"."] %b[2,"."] %b[3,"."] %b[4,"."].%e

i am able to rename the files with one single pass.

Explanations:

%b => the base name

[n,"."] => n is the n-th part of the base name
[n,"."] => ,"." (coma quote dot quote) means tell him the separator=dot to split the name in parts

%e => the extension
====> %b[1,"."]BLANK%b[2,"."]BLANK%b[3,"."]DOT%e

Siren freeware renamer can be found here => http://www.scarabee-software.net/en/siren.html
Minotaurus
Junior Member
Junior Member
Posts: 4
Joined: 2006-12-13, 11:24 UTC

Post by *Minotaurus »

Hi Rid,

vielen Dank für die Info - nur weiß damit ich leider immer noch nicht, warum der korrekte reguläre Ausdruck nicht abgearbeitet wird.

Viele Grüße

Michael
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

\.(?![^.]*$)

Wo hast du den diese Syntax her?
\. => Punkt
?! => Negatives LookAhead oder was soll das sein?
^. => kein beliebiges Zeichen
* => 0-mal oder n-mal
$ => Zeilenende (meinst du \b Wortgrenze)

Also: such einen Punkt auf den nicht "kein oder mehrere beliebige Zeichen" folgen und das Ganze am Wortende?

1. das ergibt keinen Sinn
2. Lookahed und Lookbehind gibt es beim TC nicht
3. es gibt mehrere Implementierungen (Syntaxarten) von RE
Drücke im Multiumbenenntool auf den [?]-Knopf um zu sehen was hier gültig ist.



---
Info über das limitierte RE von TC:
Time to switch to a more standard regexp engine ?
http://www.ghisler.ch/board/viewtopic.php?t=12405
Last edited by RID500 on 2006-12-13, 20:31 UTC, edited 1 time in total.
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Was soll denn der Ausdruck bewirken?

\. => punkt
(=> Teilausdruck beginnen
? => ein Fragezeichen (welches in einen Dateinamen nicht erlaubt ist
! => ein Ausrufezeichen
[^.]=> gefolgt von einem Zeichen, das kein Punkt ist
*=> entweder 0 oder midestens 2 mal
$=>und dann gefolgt vom Zeilenende
)=> Ende des Teilausdrucks

so verstehe ich das jetzt.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
User avatar
Hacker
Moderator
Moderator
Posts: 13144
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Minotaurus,
Der einfachste Weg ist und bleibt:

Code: Select all

        Name: [N]
   Extension: #[E]
  Search for: .| #
Replace with:  |.
:D
HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Minotaurus
Junior Member
Junior Member
Posts: 4
Joined: 2006-12-13, 11:24 UTC

Post by *Minotaurus »

Guten Morgen Jungs,

vielen Dank für Eure Hilfe. Dann werde ich es so machen, wie von Euch beschrieben. Schade, daß diese TC-Implementierung nicht lookahead-fähig ist. Praktisch ist sie aber dennoch.

Viele Grüße

Michael
Escano
Junior Member
Junior Member
Posts: 4
Joined: 2007-01-30, 22:39 UTC

Re: Reguläre Ausdrücke / Warum funktioniert dieser eine nich

Post by *Escano »

Minotaurus wrote:Hallo miteinander,

wenn ich diesen Ausdruck \.(?![^.]*$) für Dateinamen mit dem Aufbau "part1.part2.part3.partn.ext" einsetze, erhalte ich einen Fehler. Woran mag das liegen? Bin für jede Hilfe dankbar.

...

mein Ziel ist, alle Punkte bis auf den vor der Erweiterung durch Leerstellen zu ersetzen, soll heißen aus "part1.part2.ext" wird "part1 part2.ext". Der Ausdruck ist korrekt, wie ich durch Versuche bspw. mit RegEx und anderen Tools festgestellt habe.

Viele Grüße

Michael
Das sieht schwer nach Perl aus, ich kenn mich zwar mit Perl nich aus, aber die Hilfe von Vim7 sagt es mir (:h perl-patterns) ...
Also '(?!Atom)' matcht mit der Länge Null, wenn als Atom '[^.]*$' nicht matcht. Im Ergebnis matcht höchstens ein Punkt '\.', aber auch nur wenn noch irgendwo ein weiterer Punkt folgt.

Richtig, das geht nicht. Reguläre Ausdrücke sind eben nicht genormt sondern in jedem Programm anders.

Angenommen es ginge, dann wär auch sicherlich einfacher: \.(?=.*\.) -- jedenfalls im Prinzip
Post Reply