Notepad++ Reihenfolge von jeweils 2 Zeilen umkehren
Hallo zusammen,
ich habe eine unendlich lange .txt Datei vor mir, die nach folgendem Schema aufgebaut ist:
Zeile1: Text 2
Zeile2: Text 1
Zeile3: leer
Zeile4: Text 5
Zeile5: Text 4
Zeile6: leer
und so weiter
Nun bin ich auf der Suche nach einer Möglichkeit, um "Text 1" mit "Text 2", "Text 4" mit "Text 5" usw umzukehren.
Jede dritte Zeile, soll nach wie vor leer bleiben, sodass es danach so aussieht:
Zeile1: Text 1
Zeile2: Text 2
Zeile3: leer
Zeile4: Text 4
Zeile5: Text 5
Zeile6: leer
Gibt es eine Möglichkeit, dieses Vorgehen mit Notepad++ zu realisieren?
Ich hoffe, ihr könnt mir weiterhelfen
Im Voraus vielen Dank.
ich habe eine unendlich lange .txt Datei vor mir, die nach folgendem Schema aufgebaut ist:
Zeile1: Text 2
Zeile2: Text 1
Zeile3: leer
Zeile4: Text 5
Zeile5: Text 4
Zeile6: leer
und so weiter
Nun bin ich auf der Suche nach einer Möglichkeit, um "Text 1" mit "Text 2", "Text 4" mit "Text 5" usw umzukehren.
Jede dritte Zeile, soll nach wie vor leer bleiben, sodass es danach so aussieht:
Zeile1: Text 1
Zeile2: Text 2
Zeile3: leer
Zeile4: Text 4
Zeile5: Text 5
Zeile6: leer
Gibt es eine Möglichkeit, dieses Vorgehen mit Notepad++ zu realisieren?
Ich hoffe, ihr könnt mir weiterhelfen
Im Voraus vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 332074
Url: https://administrator.de/contentid/332074
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
Hi.
Suchen und Ersetzen Dialog öffnen:
Unter Ersetzen bei Suchen nach eingeben:
In Ersetzen durch noch das hier eingeben:
und Suchmodus aus "Regular Expression" stellen, Alle ersetzen anklicken, fertig, freuen.
P.
Suchen und Ersetzen Dialog öffnen:
Unter Ersetzen bei Suchen nach eingeben:
(?mis)([^\r\n]+)\s+([^\r\n]+)\s+(^\s*$)
$2\r\n$1\r\n
P.
Bitte
hat mir jede Menge Arbeit gespart.
Und mich 2 Minuten gekostet ;-P, Hand nach Kaffee austreck
Hallo @kannich,
sehr gerne, also fangen wir beim ersten Ausdruck an
(?mis)
Dieser Ausdruck legt sogenannte Flags fest die bestimmte Verhalten des Regex-Patterns beeinflussen, als da wären m (multiline matching) welches bedeutet das literal ^ statt den Anfang des Strings den Anfang jeder Zeile matcht, genauso wie das Literal $ das Ende jeder Zeile bedeutet.
Dann das i bedeutet das Case-Insensitive gematcht wird. Das s bedeutet das der Punkt (.) auch Zeilenumbrüche umfasst, ist hier eigentlich nicht nötig, hatte das nur in meinem Programm so eingestellt.
([^\r\n]+)
Das bedeutet alles was kein(^) Zeilenumbruch ist gematcht wird und das ganze wird durch das Klammernpaar als Backreference gespeichert damit man die Zeile beim Replace später als $1 ansprechen kann
\s+
Das hier matcht den Zeilenumbruch, da ein Zeilenumbruch aus mehreren Zeichen bestehen kann, der Quantifier + (mindestens ein Zeichen)
([^\r\n]+)\s+
Das selbe nochmal für die zweite Zeile. Ebenfalls mit Backreference (Klammer
n), im Replace anzusprechen mit $2.
(^\s*$)
Das hier matcht nun eine darauffolgende Leerzeile ^ für den Zeilen-Anfang, das \s* für nicht sichtbare Zeichen 0 oder mehr und das $ für das Zeilenende.
Im Replace-String werden dann die oben angegebenen Backreferences , also Zeile 1 und 2 entsprechend der gewünschten Reihenfolge gesetzt
und mit Zeilenumbrüchen versehen (\r\n)
$2\r\n$1\r\n
Lese dir ein paar der Regular Expression Tutorials durch, das Thema ist sehr umfangreich und hier leider nicht in ein zwei Sätzen erläutert.
Hoffe das bringt etwas Licht ins Dunkle.
Gruß p.
sehr gerne, also fangen wir beim ersten Ausdruck an
(?mis)
Dieser Ausdruck legt sogenannte Flags fest die bestimmte Verhalten des Regex-Patterns beeinflussen, als da wären m (multiline matching) welches bedeutet das literal ^ statt den Anfang des Strings den Anfang jeder Zeile matcht, genauso wie das Literal $ das Ende jeder Zeile bedeutet.
Dann das i bedeutet das Case-Insensitive gematcht wird. Das s bedeutet das der Punkt (.) auch Zeilenumbrüche umfasst, ist hier eigentlich nicht nötig, hatte das nur in meinem Programm so eingestellt.
([^\r\n]+)
Das bedeutet alles was kein(^) Zeilenumbruch ist gematcht wird und das ganze wird durch das Klammernpaar als Backreference gespeichert damit man die Zeile beim Replace später als $1 ansprechen kann
\s+
Das hier matcht den Zeilenumbruch, da ein Zeilenumbruch aus mehreren Zeichen bestehen kann, der Quantifier + (mindestens ein Zeichen)
([^\r\n]+)\s+
Das selbe nochmal für die zweite Zeile. Ebenfalls mit Backreference (Klammer
n), im Replace anzusprechen mit $2.
(^\s*$)
Das hier matcht nun eine darauffolgende Leerzeile ^ für den Zeilen-Anfang, das \s* für nicht sichtbare Zeichen 0 oder mehr und das $ für das Zeilenende.
Im Replace-String werden dann die oben angegebenen Backreferences , also Zeile 1 und 2 entsprechend der gewünschten Reihenfolge gesetzt
und mit Zeilenumbrüchen versehen (\r\n)
$2\r\n$1\r\n
Lese dir ein paar der Regular Expression Tutorials durch, das Thema ist sehr umfangreich und hier leider nicht in ein zwei Sätzen erläutert.
Hoffe das bringt etwas Licht ins Dunkle.
Gruß p.
Hallo pattern,
SUPER!! Vielen Dank für diese klasse Erklärung!
Ich hatte mir (das für mich sehr gut erklärende Tut) von Daniel Fett bzgl. reguläre Ausdrücke schon zu Gemüte geführt und schon etwas erkannt, aber nicht alles. Dank Deiner Erklärung sind nun auch meine letzten Fragezeichen verschwunden. Das macht Appetit auf einen tieferen Einstieg in reguläre Ausdrücke. Danke Dir.
VG kannich
SUPER!! Vielen Dank für diese klasse Erklärung!
Ich hatte mir (das für mich sehr gut erklärende Tut) von Daniel Fett bzgl. reguläre Ausdrücke schon zu Gemüte geführt und schon etwas erkannt, aber nicht alles. Dank Deiner Erklärung sind nun auch meine letzten Fragezeichen verschwunden. Das macht Appetit auf einen tieferen Einstieg in reguläre Ausdrücke. Danke Dir.
VG kannich
Das macht Appetit auf einen tieferen Einstieg in reguläre Ausdrücke
Absolut, die kannst du in so ziemlich jeder Programmiersprache anwenden, ich brauche sie z.B. täglich - ohne sie würden wir hier alle noch mit mid(), substr() und Len() rumfuchteln bis der Arzt kommt . Wenn man einmal den Dreh raushat gehen Dinge die man vorher nie für möglich gehalten hat.