[Regex] Alle "." aus Dateinamen entfernen

Meisterzunge

Mitglied
Hi,

ich suche eine Möglichkeit alle "." (Punkte) aus einem Dateinamen zu entfernen (Hintergrund: Umbenennen von vielen Dateien).

Die Dateien haben alle das Selbe Format:

Code:
Info.Über.die.Datei.csv

Die Datei möchte ich umbenennen in:

Code:
Info Über die Datei.csv

Jetzt sollen alle Punkte bis auf den Letzten entfernt werden.

Folgende Expression habe ich für den Anfang:

Code:
((\.[a-zA-Z0-9-_]+)+)(\.\w+$)

Wenn ich den Inhalt mit \0 ersetze habe ich den kompletten Inhalt so wie er ist. Das komplette ersetzen hätte nur Sinn wenn ich irgendwie sagen könnte dass er die Punkte nicht mit in die Backreferenz aufnehmen soll!? Wäre zumindest ein Ansatz...

Oder am besten ganz anders vorgehen?

Gruß,
Marco
 
Da ich mit Regex (meistens) auf Kriegsfuß stehe, löse ich es mal so:

PHP:
<?php
$name = "Info.Über.die.Datei.csv";

// Dateiendung entfernen
$neu = substr($name, 0, strlen($name)-4);

// Punkte durch Leerzeichen ersetzen und Endung wieder anhängen
$neu = str_replace(".", " ", $neu) . ".csv";

echo $neu;
?>
 
Hi.

Um einfach nur alle Punkte bis auf den letzen durch Leerzeichen zu ersetzen, wären reg. Ausdrücke wie Kanonen auf Spatzen.

Der Vollständigkeit halber:
Code:
[.](?=.*[.])
Gruß
 
Danke,

ich wollte das ohne Programmieren lösen - also nur mit PowerGREP o.Ä...

War auf jeden Fall der richtige Ansatz mit Lookahead..


Gruß,
Marco
 
Zurück