MUT: Reguläre Suche – Fallbeispiele - Hilfe erbeten

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
tc_fun
Senior Member
Senior Member
Posts: 208
Joined: 2015-12-05, 16:47 UTC

MUT: Reguläre Suche – Fallbeispiele - Hilfe erbeten

Post by *tc_fun »

(edit: Nuss geknackt bei 1a, 1 b - offen sind noch 2 und 3)

( ... 1c und 1d probiere ich nach 1a und 1b)

Guten Morgen,

ich habe mich in den letzten Tagen viel mit der regulären Suche beschäftigt und bin überrascht, wie wirkungsvoll und effektiv dieses Instrument in Total Commander zu nutzen ist.

Folgende Aufgabenstellungen konnte ich leider nicht lösen:
Sozusagen eine Handvoll zu knackende Nüsse zu Weihnachten :-)

Ich bin auf der Suche nach einer Lösung für die „reguläre Suche“:

(1 a)

Beispiel:
Tag - 20141129.txt

Ziel:
Tag - 2014-11-29.txt

Ich habe versucht, das mit folgender Regulierersuche zu lösen:
([0-9]{4,4)([0-9]{2,2)([0-9]{2,2)
$1-$2-$3

Meine Überlegung dabei – finde eine genau 8-stellige Nummer, finde darin ab dem Beginn der Nummer eine 4-stellige Nummer, anschließend eine 2-stellige Nummer und danach noch mal eine 2-stellige Nummer und trenne die Ziffernfolgen mit einem Bindestrich.

Soweit zur Theorie – wie kann man das als reguläre Suche schreiben?

Am Anfang der Nummer steht eines dieser Zeichen
Bindestrich oder Leerzeichen oder Unterstrich

Am Ende der Nummer steht der Punkt (/.).


(1 b)

In Analogie suche ich eine Lösung für folgendes Beispiel:

Beispiel:
Tag - 042015.txt

Ziel:
Tag - 2015-04.txt
$2-$1

Finde eine genau 6-stellige Nummer, nimm ab dem Anfang eine 2-stellige Nummer, dann eine 4-stellige Nummer.

Am Anfang der Nummer steht eines dieser Zeichen
Bindestrich oder Leerzeichen oder Unterstrich

Am Ende der Nummer steht der Punkt (/.).

Wie kann man das als reguläre Suche schreiben?

(1 c)

In Analogie suche ich eine Lösung für folgendes Beispiel:

Beispiel:
Tag - 0415.txt

Ziel:
Tag - 2015-04.txt
20$2-$1


Finde eine genau 4-stellige Nummer, nimm ab dem Anfang eine 2-stellige Nummer, dann eine 2-stellige Nummer.

Am Anfang der Nummer steht eines dieser Zeichen
Bindestrich oder Leerzeichen oder Unterstrich

Am Ende der Nummer steht der Punkt (/.).

Wie kann man das als reguläre Suche schreiben?



(1 d)

In Analogie suche ich eine Lösung für folgendes Beispiel:

Beispiel:
Tag - 04 15.txt

Ziel:
Tag - 2015-04.txt
20$2-$1


Finde eine genau 5-stellige Zeichenkette (2 Ziffer, ein Leerzeichen, 2 Ziffern), nimm ab dem Anfang eine 2-stellige Nummer, ignoriere das Leerzeichen, dann eine 2-stellige Nummer.

Am Anfang der Nummer steht eines dieser Zeichen
Bindestrich oder Leerzeichen oder Unterstrich

Am Ende der Nummer steht der Punkt (/.).

Wie kann man das als reguläre Suche schreiben?


(2)

Bei dieser Lösung gibt es noch ein Schönheitsfehler.

Beispiel:
20151209-Handelsblatt.pdf
20151209-Handelsblatt Teil 33 von 2015.pdf

Ziel:
Ich möchte, dass der Dateiname so verändert wird:
Handelsblatt - 20151209.pdf
Handelsblatt Teil 33 von 2015 - 20151209.pdf

Mit folgendem Suchmuster bin ich schon ein Stückchen vorangekommen, es funktioniert merkwürdigerweise nur,wenn der Bindestrich im ersten Suchausdruck enthalten ist. Dadurch ist natürlich ein Bindestrich am Ende zu viel im Dateinamen.

Wie kann man dieses Suchmuster eleganter und vor allem funktionstüchtig schreiben?

suchen nach:
([0-9]{8}-)(\w*)

ersetzen durch:
$2 - $1

Ergebnis:
Handelsblatt - 20151209-.pdf

(3)

Ich möchte Monat und Jahr miteinander tauschen, wenn dazwischen entweder einen Bindestrich oder ein Leerzeichen sind. Als Einzelsuche geht das so:

Beispiel:
12-2015
12 2015
12.2015
12_2015

Ziel:
2015-12

suche nach dem Muster "12-2015"
([0-9]{2})-([0-9]{4})

ersetze das Muster durch "2015-12"
$2-$1

und

suche nach dem Muster "12 2015"
([0-9]{2}) ([0-9]{4})

ersetze das Muster durch "2015 12"
$2-$1

Wie kann ich beide Suchanfragen in einer Suchanfrage kombinieren?
Suche nach Bindestrich oder Leerzeichen in einem Such-Durchlauf?


Vielen Dank!

tc_fun
Last edited by tc_fun on 2015-12-11, 15:35 UTC, edited 1 time in total.
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

MUT: RegEx Beispiele

Post by *Stefan2 »

Ich fang' mal schnell mit der 1 an:


1a)

FROM:
Tag - 20141129.txt
TO:
Tag - 2014-11-29.txt

Suche: ([-_ ])(\d{4})(\d{2})(\d{2})\.
Ersetze: $1$2-$3-$4.
[x]RegEx

Erklärung:
Soll nur auf einen Teil irgendwo im Dateinamen passen.
Suche ein Zeichen aus der Gruppe "Bindestrich/Unterstrich/Leerzeichen",
gefolgt von vier Ziffern, zwei Ziffern, zwei Ziffern, ein Punkt.




1b)

FROM:
Tag - 042015.txt
TO:
Tag - 2015-04.txt

Suche: ([-_ ])(\d\d)(\d{4})\.
Ersetze: $1$3-$2.
[x]RegEx




Edit, weiter geht's:


2.)

FROM:
20151209-Handelsblatt.pdf
20151209-Handelsblatt Teil 33 von 2015.pdf

TO:
Handelsblatt - 20151209.pdf
Handelsblatt Teil 33 von 2015 - 20151209.pdf


Suche: ^(.+)-(.+)$
Ersetze: $2 - $1
[_]E(rweiterung)
[x]RegEx

Erklärung:
Soll auf den gesamten Dateinamen passen: ^.....$.
Suche am Anfang ein-oder-mehr Stücke eines beliebigen Zeichenen, bis zu einem Bindestrich,
dann gefolgt von ein-oder-mehr Stücke eines beliebigen Zeichenen bis zum Ende (ohne die Erweiterung zu berücksichtigen, daher "[_]E")




3.)

FROM:
12-2015
12 2015
12.2015
12_2015

TO:
2015-12


Suche: (\d\d)[-_ .](\d{4})
Ersetze: $2-$1
[x]RegEx

Erklärung:
Soll nur auf einen Teil irgendwo im Dateinamen passen.
Suche zwei Ziffern, ein Zeichen aus der Gruppe "Bindestrich/Unterstrich/Leerzeichen/Punkt", vier Ziffern, irgendwo im Dateinamen.




 
HTH? :D
Last edited by Stefan2 on 2015-12-11, 19:07 UTC, edited 3 times in total.
tc_fun
Senior Member
Senior Member
Posts: 208
Joined: 2015-12-05, 16:47 UTC

Post by *tc_fun »

Vielen Dank Stefan2! Habe es gleich oben editiert.

Bleiben im Wesentlichen nur noch (2) und (3).
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Reguläre Suche – Fallbeispiele - Hilfe erbeten

Post by *Stefan2 »

tc_fun - Posted: Fri Dec 11, 2015 15:58
tc_fun wrote:Guten Morgen,
Wo kommst du denn her? (Oder bist du Student?)







 
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Post by *milo1012 »

Zu (2)
Du musst lediglich den Bindestrich aus der Gruppenklammer herausnehmen
und mit dem Punkt-Platzhalter arbeiten:

Code: Select all

([0-9]{8})-(.+)
zu (3)

Code: Select all

(\d{2})[.\-_\s](\d{4})
$2-$1
TC plugins: PCREsearch and RegXtract
tc_fun
Senior Member
Senior Member
Posts: 208
Joined: 2015-12-05, 16:47 UTC

Re: Reguläre Suche – Fallbeispiele - Hilfe erbeten

Post by *tc_fun »

Stefan2 wrote:tc_fun - Posted: Fri Dec 11, 2015 15:58
tc_fun wrote:Guten Morgen,
Wo kommst du denn her? (Oder bist du Student?)

 
Guten Morgen ist zu jeder Tageszeit eine freundliche Anrede, ähnlich wie moin ... :-)

und vielen Dank für Eure Tipps - eine super Hilfe!
Post Reply