Regex durch Textpad ersetzen

18039
a CVn

Ich muss ein Datumsformat in einer großen Datei aktualisieren, die ich im Textpad habe.

Das Datumsformat ist derzeit MM-TT-JJJJ und ich muss es mm / TT / JJJJ machen

Jede Zeile mit einem Datum beginnt mit einem D.

so: D02-12-2009

Mein Regex-Suchabschnitt funktioniert einwandfrei ^ D (. ?) - (. ?) - (. *?)?, Aber das Ersetzen schlägt fehl, wenn versucht wird, $ 1 $ 2 $ 3 für meine Werte D $ 1 / $ 2 / $ 3 zu verwenden. Es wird durch die wörtliche 1, 2 und 3 Dollar ersetzt. Ich habe Textpad so eingestellt, dass POSIX-Regex verwendet wird.

Irgendwelche Ideen, wie man die Werte einfängt und sie in meinen Ersetzungsteil einsetzt?

6

2 Antworten auf die Frage

8
YOU

Bitte verwenden Sie \1 \2 \3statt$1 $2 $3

Finde was: D([0-9]+)-([0-9]+)-([0-9]+)

Ersetzen mit: D\1/\2/\3

Vor

D02-12-2009 D03-12-2009 D04-12-2009 

Nach dem

D02/12/2009 D03/12/2009 D04/12/2009 

Zur Gruppierung

Gruppiert einen markierten Ausdruck, der in Ersetzungsausdrücken verwendet werden soll. Ein RE kann bis zu 9 markierte Ausdrücke haben, die entsprechend ihrer Reihenfolge im RE nummeriert sind. Der entsprechende Ersetzungsausdruck lautet \ x für x im Bereich von 1-9. Beispiel: Wenn ([az] +) ([az] +) mit "falsch" übereinstimmt, würde \ 2 \ 1 es durch "falschen Weg" ersetzen.

PS: Ich habe keine Ahnung, warum das hierher gezogen wird, ich musste zum ersten Mal hierher kommen. :-)

Ich konnte '\ 1' nicht dazu bringen, in TextPad 7.0.9 zu arbeiten, nur '$ 1' würde funktionieren und nur, wenn es zwei oder mehr Gruppen gibt. Ansonsten musste ich $ & `verwenden. yuck Conrad Frix vor 10 Jahren 1
0
user238719

"Jede Zeile mit einem Datum beginnt mit einem D." Ich würde für zusätzliche Sicherheit hinzufügen „ ^ “ zum Ausdruck finden: **^**D([0-9]+)-([0-9]+)-([0-9]+).
Nicht sehr wahrscheinlich, dass die Zeichenfolge anderswo vorkommen würde, aber ...