Hallo Forum, 2ter Versuch:
Ich möchte jeden vierten/fünften/... Bindestrich in einer Datei ersetzen.
ich sitze nun vor der Aufgabe etwa 5k Dateien umzubenennen.
Ich muß die Struktur: A-B-C-D einhalten damit ich NAmenskonventionen erfülle. Derzeit sieht's noch in etwa so aus
A-B-B-C-D-D-D
Im Fallbeispiel:
AV416-Flash4k_29C4009-039-gtr-452U13-34p9_W12-AV416.bin
"AV416-Flash4k_29C4009-039-" ist soweit OK
jedes weitere muß ich durch einen Unterstrich ersetzen
So soll es aussehen:
A-B_B-C-D_D_D...
im Beispiel:
AV416-Flash4k_29C4009-039-gtr_452U13_34p9_W12_AV416.bin
Mein erster Ansatz war *-*-*-*-* durch *-*-*-*_* ersetzen zu lassen, was nicht klappt (dazu muß ich wohl mit den $ Variablen arbeiten).
Gruß
Sam
P.S.: Flashstandsbezeichnungen sind Versionsnummern/-bezeichnungen von FlashROMs für Steuergeräte.
Ctrl-M und zu viele Bindestriche
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 4
- Joined: 2006-01-29, 13:14 UTC
- Location: München
Ctrl-M und zu viele Bindestriche
Last edited by Sam van Ratt on 2006-01-29, 15:09 UTC, edited 2 times in total.
Dein Posting klingt danach, als wenn Du eine triviale Aufgabe möglichst kompliziert erklären möchtest, damit sie schlußendlich niemand mehr lösen kann. 
Probier's mal mit weniger, dafür aber präziseren Sätzen und mit Beispielen anhand von realen Datei- und Verzeichnisnamen statt kryptischen Abstrahierungen. Laß die Infos, die nicht interessant sind, einfach weg, z.B. den Teil der Aufgabe, den Du meinst, selbst lösen zu können.
Was bitte ist eine "Flashstandsbezeichnung"? Habe ich noch nie gehört sowas.
Wenn Du einfach nur den jeweils fünften Bindestrich eiens Dateinamens durch einen Unterstrich ersetzen willst, sag einfach "ja", dann bekommst Du einen RegEx-String und gut is.
Icfu

Probier's mal mit weniger, dafür aber präziseren Sätzen und mit Beispielen anhand von realen Datei- und Verzeichnisnamen statt kryptischen Abstrahierungen. Laß die Infos, die nicht interessant sind, einfach weg, z.B. den Teil der Aufgabe, den Du meinst, selbst lösen zu können.
Was bitte ist eine "Flashstandsbezeichnung"? Habe ich noch nie gehört sowas.
Wenn Du einfach nur den jeweils fünften Bindestrich eiens Dateinamens durch einen Unterstrich ersetzen willst, sag einfach "ja", dann bekommst Du einen RegEx-String und gut is.

Icfu
This account is for sale
Das ist aber nun wieder was anderes, weil da hinten bereits ein Unterstrich steht! Das ist also nicht A-B_B-C-D-D-D-D sondern A-B_B-C-D-D_D-D. Das ist äußerst verwirrend, RegEx verlangt Klarheit, kein Wischiwaschi, sonst kommen unerwartete Resultate raus!Im Fallbeispiel:
AV416-Flash4k_29C4009-039-gtr-452U13-34p9_W12-AV416.bin
Also, ich hab's jetzt mal so gemacht, wie ich Dich zuerst verstanden habe:
A-B_B-C-D-D-D-D nach A-B_B-C-D_D_D_D
Code: Select all
Suchen nach: -(\w+)-(\w+)-(\w+)-(\w+)(\.\w+)
Ersetzen durch: _$1_$2_$3_$4$5
Icfu
This account is for sale
-
- Junior Member
- Posts: 4
- Joined: 2006-01-29, 13:14 UTC
- Location: München
Hallo icfu,
einen Unterstrich habe ich auch als normales Satzzeichen gewertet. Mit RegEx kenne ich mich auch nicht aus, daher auchdiese neue Erkenntnis das ein bereits vorhander Unterstrich ein Makel hier darstellt. Mien Grundproblem besteht eben in dem nicht vorhanden Syntax des D Bauteils. Ist es eine Hilfe wenn ich sage, daß ich von hinten (Dateinamensende) her gesehen, 'einfach' den letzten Bindestrich durch einen Unterstrich zu ersetzen (inkl bereits vorhandener Unterstriche) [mit der Premisse das alle dortigen Dateien eben im D-Teil minimum einen - zuviel haben (kann ja die mehrfachen -, mehrfach angehen]?
Der von dir genannte Syntax sollte mir helfen zumindest da mal in die Sprünge zu kommen
Gruß und Danke
Sam
einen Unterstrich habe ich auch als normales Satzzeichen gewertet. Mit RegEx kenne ich mich auch nicht aus, daher auchdiese neue Erkenntnis das ein bereits vorhander Unterstrich ein Makel hier darstellt. Mien Grundproblem besteht eben in dem nicht vorhanden Syntax des D Bauteils. Ist es eine Hilfe wenn ich sage, daß ich von hinten (Dateinamensende) her gesehen, 'einfach' den letzten Bindestrich durch einen Unterstrich zu ersetzen (inkl bereits vorhandener Unterstriche) [mit der Premisse das alle dortigen Dateien eben im D-Teil minimum einen - zuviel haben (kann ja die mehrfachen -, mehrfach angehen]?
Der von dir genannte Syntax sollte mir helfen zumindest da mal in die Sprünge zu kommen
Gruß und Danke
Sam
Hier muß ich passen, weil ich nur 50% verstehe.Ist es eine Hilfe wenn ich sage, daß ich von hinten (Dateinamensende) her gesehen, 'einfach' den letzten Bindestrich durch einen Unterstrich zu ersetzen (inkl bereits vorhandener Unterstriche) [mit der Premisse das alle dortigen Dateien eben im D-Teil minimum einen - zuviel haben (kann ja die mehrfachen -, mehrfach angehen]?
Wenn Du sagst, daß das Bindungsglied Nummer sechs entweder ein Bindestrich oder ein Unterstrich ist, kann man das berücksichtigen.
Probier's mal so:
Code: Select all
Suchen: [-_](\w+)[-_](\w+)[-_](\w+)[-_](\w+)(\.\w+)
Ersetzen: _$1_$2_$3_$4$5
Icfu
This account is for sale
-
- Junior Member
- Posts: 4
- Joined: 2006-01-29, 13:14 UTC
- Location: München
Habe gerade eine wichtige Beschränkung gesehen: Leerzeichen, Kommas, Pluszeichen, Hochkommas; kommt alles in den Ausdrücken vor.
AV416-Flash4k_29C4009-039-gtr-452U13-34p9_W12-AV416.bin
AV416-Flash16k_49E16004.D3_Anpassung Messfahrt S'03E-039-gtr-452U13-34p9_W12-AV416.bin
TestROM-R4Sauger+Turbo-002-12.04.2004-R4_C6.bin
...
Danke für deine Mühe
Gruß
Sam
AV416-Flash4k_29C4009-039-gtr-452U13-34p9_W12-AV416.bin
AV416-Flash16k_49E16004.D3_Anpassung Messfahrt S'03E-039-gtr-452U13-34p9_W12-AV416.bin
TestROM-R4Sauger+Turbo-002-12.04.2004-R4_C6.bin
...
Danke für deine Mühe
Gruß
Sam
Wenn da alles vorkommt, solltest Du eine Vorauswahl treffen und dann mehrere RegEx-Strings anwenden.
Es ist mühselig, alle Ausnahmefälle in einen einzigen String einzubauen und ehrlich gesagt, habe ich dazu mangels Bezahlung keine Böcke, das dauert mir einfach zu lange, sorry.
Schau Dir reguläre Ausdrücke mal selbst an, üben kannst Du mit The Regex Coach.
Viel Erfolg
Icfu
Es ist mühselig, alle Ausnahmefälle in einen einzigen String einzubauen und ehrlich gesagt, habe ich dazu mangels Bezahlung keine Böcke, das dauert mir einfach zu lange, sorry.

Schau Dir reguläre Ausdrücke mal selbst an, üben kannst Du mit The Regex Coach.
Viel Erfolg
Icfu
This account is for sale