• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

regulären Ausdruck an einem bestimmten Muster etwas hinzufügen

joon

Grahams Jubiläumsapfel
Registriert
17.06.07
Beiträge
106
Hallo Forum,

ich habe folgende Zeilen (ein paar Hundert davon), die nach folgendem Schema aufgebaut sind:
Code:
1337-8171-1798-000000094;7;1798-07;T
1337-8171-1798-000000096;7;1798-07;T
1337-8171-1798-000000097;8;1798-08;T
1337-8171-1798-000000098;8;1798-08;T

Ich möchte dass nach dem zweiten Semikolon das "1798-xx" (wobei xx zwei Ziffern sind) die Zeichenfolge "-01" drangehängt wird.

Also es sollte ungefähr so aussehen:
Code:
1337-8171-1798-000000094;7;1798-07-01;T
1337-8171-1798-000000096;7;1798-07-01;T
1337-8171-1798-000000097;8;1798-08-01;T
1337-8171-1798-000000098;8;1798-08-01;T

Ich krieg das mit den regulären Ausdrücken nicht hin...

Vielen Dank!
 
Beispiel fuer Ruby:
Code:
irb(main):001:0> "1337-8171-1798-000000094;7;1798-07;T".gsub(/(;\w)$/,"-01\\1")
=> "1337-8171-1798-000000094;7;1798-07-01;T"

Das Pattern ist: /(;\w)$/
Du benoetigt eine Funktion, die dir das ersetzen ermoeglicht.
In meinem Fall war das gsub. Dort setzt du dein -01 vor die Backreference \1
und das sollte es gewesen sein.


Viel Erfolg.
 
Oder wenn du es direkt in vi ändern möchtest:

Code:
:%s/;1798-\([0-9][0-9]\);/;1798-\1-1;/g

Oder allgemeiner einfach vor das dritte Semikolon -1 schreiben:

Code:
:%s/\(;.*;.*\);/\1-1;/g
 
Auch da kann man sich kuerzer fassen ;)
Code:
:%s/\(;\w$\)/-01\1/g
 
Hallo ihr beiden,

vielen Dank für die Tips!!!