Forum: PC-Programmierung Regex - Frage


von Erwin D. (Gast)


Lesenswert?

Hallo,

ich habe folgende Frage:
Eine Menge Files, deren Filenamen folgendermaßen aufgebaut sind,
möchte ich gern umbenennen und suche dafür die passende RegEx.

a03cdefxvdabc.txt

Der Teil vor dem Punkt ist beliebig lang. Davon möchte ich die letzten
drei Zeichen entfernen (hier "abc", beliebige Zeichen). Die Endung
(hier .txt) soll erhalten bleiben.

Der Filename soll also dann so aussehen:
a03cdefxvd.txt

Hab auch schon auf regex101.com experimentiert, habe aber keine
Lösung gefunden.
Meine Idee:
(.+)(...)(.txt)
eine beliebige Anzahl Zeichen (mindestens 1)
dann drei beliebige Zeichen
dann die Endung .txt

Wie finde ich die ersten Zeichen (ausser den letzten drei),
gefolgt von der Endung?

Kann mir jemand einen Hinweis geben? Ist bestimmt einfach,
aber ich komm nicht drauf.

von Soeren K. (srkeingast)


Lesenswert?

(.*)(.{3})\.(.*)

Liefert Dir drei Gruppen. Wenn du Gruppen nicht brauchst, entferne 
einfach die Klammern drumrum.

von Erwin D. (Gast)


Lesenswert?

Soeren K. schrieb:
> (.*)(.{3})\.(.*)
>
> Liefert Dir drei Gruppen. Wenn du Gruppen nicht brauchst, entferne
> einfach die Klammern drumrum.

Vielen Dank!
Ich habe jetzt auch meinen Denkfehler (bzw. mein Unwissen) gefunden.
Die Ersetzungszeichenkette muss bei deiner Regex lauten $1\.$3
und in meiner Variante einfach $1$3
Das mit den Gruppen-Nummern wusste ich noch nicht.
So ist das eben, wenn man sich das erste Mal damit beschäftigt.

Also vielen Dank nochmal, ich habe etwas gelernt :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.