
93578
03.03.2017, aktualisiert um 16:54:20 Uhr
Regex - zusammengefasste Wörter finden und korrekt trennen???
Hallo Community,
ich habe folgendes Problem: in einer Text-Datei mit fast 15.000.000 Wörter (1 Wort pro Zeile) habe ich durch ein Berabeitungsfehler einige Wörter zusammengefasst bekommen, die früher durch ein Bindestrich getrennt waren:
Z.B.
"Ist"-Zustand:
"Soll"-Zustand:
oder (noch besser):
Wie kann ich das korrigieren? Klein/Groß-Schreibung soll dabei beachtet werden.
Vielen Dank!
ich habe folgendes Problem: in einer Text-Datei mit fast 15.000.000 Wörter (1 Wort pro Zeile) habe ich durch ein Berabeitungsfehler einige Wörter zusammengefasst bekommen, die früher durch ein Bindestrich getrennt waren:
Z.B.
"Ist"-Zustand:
MaxMoritzStraße
MaxPlankInstitut
KarlHeinz
TheodorHeinrichMariaVonSchmidt
"Soll"-Zustand:
Max-Moritz-Straße
Max-Plank-Institut
Karl-Heinz
Theodor-Heinrich-Maria-Von-Schmidt
oder (noch besser):
Max
Moritz
Straße
Max
Plank
Institut
Karl
Heinz
Theodor
Heinrich
Maria
Von
Schnidt
Wie kann ich das korrigieren? Klein/Groß-Schreibung soll dabei beachtet werden.
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 331050
Url: https://administrator.de/forum/regex-zusammengefasste-woerter-finden-und-korrekt-trennen-331050.html
Ausgedruckt am: 17.04.2025 um 15:04 Uhr
6 Kommentare
Neuester Kommentar

Mach ein Case Sensitive Replace mit folgendem Pattern:
und als Ersetzungsstring ein Zeilenumbruch \r\n
Sucht mit einem non matching Negative Lookbehind nach keinem Zeilenanfang und mit einem non matching Positive Lookahead nach einem Großbuchstaben und setzt dort dann den Zeilenumbruch beim Replace ein.
Gruß
(?<!^)(?=[A-Z])
Sucht mit einem non matching Negative Lookbehind nach keinem Zeilenanfang und mit einem non matching Positive Lookahead nach einem Großbuchstaben und setzt dort dann den Zeilenumbruch beim Replace ein.
Gruß
Moin,
Je nachdem welche Sprache du nehmen willst, kann es hier unterschiede geben.
Beim nutzen von PCRE wird es einfach. Ich empfehle ja immer www.regex101.com als nette plattform zum ausarbeiten von Regex. Sie bieten übrigens auch Code generation und eine wunderbare Referenz an bezüglich Match-Pattern.
Hier mal mein Beispiel für die Version mit Bindestrich: https://regex101.com/r/sLKPru/2
Wenn du lieber alles in einzelne Zeilen haben willst, einfach den bindestrich durch `\n` ersetzen.
Du solltest ein bisschen rumspielen und ausprobieren, ich denke ich habe dir da einen guten Ansatz geliefert ;)
Gruß
Chris
Je nachdem welche Sprache du nehmen willst, kann es hier unterschiede geben.
Beim nutzen von PCRE wird es einfach. Ich empfehle ja immer www.regex101.com als nette plattform zum ausarbeiten von Regex. Sie bieten übrigens auch Code generation und eine wunderbare Referenz an bezüglich Match-Pattern.
Hier mal mein Beispiel für die Version mit Bindestrich: https://regex101.com/r/sLKPru/2
Wenn du lieber alles in einzelne Zeilen haben willst, einfach den bindestrich durch `\n` ersetzen.
Du solltest ein bisschen rumspielen und ausprobieren, ich denke ich habe dir da einen guten Ansatz geliefert ;)
Gruß
Chris

Perl war nur der Modus wenn du Ultraedit genutzt hättest.
Du musst nur eine Regex Engine benutzen welche
positive lookaheads und negative lookbehinds unterstützt.
SED unterstützt diese nicht aber dort kannst du alternativ das hier nutzen:
Du musst nur eine Regex Engine benutzen welche
positive lookaheads und negative lookbehinds unterstützt.
SED unterstützt diese nicht aber dort kannst du alternativ das hier nutzen:
sed -re 's/([^^])([A-Z])/\1\n\2/g' datei.txt >datei-neu.txt