Nachträgliche Bearbeitung von UNSYNCEDLYRICS

Mich beschäftigt mal wieder die möglichst komfortable Beseitigung von Fremdkörpern im Feld UNSYNCEDLYRICS. Die Fremdkörper werden meistens automatisch durch entsprechende Webseiten mit Lyrics-Informationen beim Abgreifen eingestreut.

Beispiel einer solchen Einstreuung:

CR\LF
See
upcoming country shows (CR\LF)
Get tickets for your favorite artists
2x CR\LF
You might also like
(CR\LF)
Me And My Chauffeur Blues (CR\LF)
Sue Foley (CR\LF)
Manchild (CR\LF)
Sabrina Carpenter (CR\LF)
EURO-COUNTRY (CR\LF)
CMAT
2x CR\LF

Es existiert ein Muster aber die Inhalte sind sehr variabel. Die einzigen Konstanten sind fett markiert.
Mein Ziel ist es, den ganzen Text loszuwerden. 2 CR\LFs sollen zur Abgrenzung zum übrigen Text erhalten bleiben.

Wenn ich das richtig sehe, sind am Ende 3x CR/LF ... Das ließe sich ersetzen mit:
$regexp(%unsyncedlyrics%,.*\r\n\r\n\r\n,\r\n\r\n)

Entschuldigung. Das ist ein Tippfehler. Ich korrigiere es. “CR\LFs sind bei jedem Absatz im Gesamttext. Die einzelnen Zeilen werden getrennt durch 1x CR\LF.

Dann ginge vielleicht:
$regexp(%unsyncedlyrics%,.*You might also like.*\r\n\r\n,\r\n\r\n)

Das macht in meiner Vorschau

 "xxx||

See upcoming country shows (CR\LF)
Get tickets for your favorite artists (CR\LF)
2x CR\LF
You might also like (CR\LF)
Me And My Chauffeur Blues (CR\LF)
Sue Foley (CR\LF)
Manchild (CR\LF)
Sabrina Carpenter (CR\LF)
EURO-COUNTRY (CR\LF)
CMAT 


Mehr Text" ->
  "

Mehr Text"

Das sind vermutlich auch die einzigen Inhalte, die Du mit entsprechenden regulären Ausdrücken entfernen kannst. Also vom fetten Starttext bis und mit CR\LF.

Ich nehme nicht an, dass Du die "normalen" CR\LF pro Zeile entfernen willst?

Es würde helfen, wenn Du uns zeigst, wie das Endergebnis idealerweise aussehen sollte.

Beseitigt werden soll alles (angefangen von “CR\LF See” bis auf die 2 CR\FSs ganz am Ende.

Meine Regex-Kenntnisse sind sehr begrenzt und ich weiß nicht, ob so was überhaupt geht. Ich stelle mir einen Ausdruck vor, der alles angefangen von “CR\LF See” bis zum 2. Vorkommen von doppelten CR\LFs löscht.

Das Problem ist dabei, soweit ich das sehe, der zu kurze und damit uneindeutige Text “See”. Leider variiert schon das 2. Wort dahinter. Diese Passage ist wohl eindeutig zur kurz und wird zu unzähligen Fehlfunden führen. Könnte man denn mit Regex eine Bedingung dazunehmen, dass innerhalb des Textes “Get tickets” und “You might also like” enthalten sein müssten?

Ich weiß nicht - hast du meinen Vorschlag mal ausprobiert?
Und wenn ja, bei welchen anderen Texten hat das denn zu

geführt?

Ja. Der zu beseitigende Text ist mitten im Komplett-Text enthalten. Das Ergebnis ist bei mir, dass außer dem letzten Absatz der Lyrics aller Text entfernt wird.

Versuch mal:
$regexp(%unsyncedlyrics%,(.*)See upcoming.*You might also like.*?CMAT\r\n\r\n(.*?),$1\r\n\$2)

@ohrenkino hat Recht. Das sollte grundsätzlich mit einem RegExp funktionieren:
(.*)See.*?CMAT\s\s(.*)

Die Substition wäre dann $1 mit dem Teil vor See und mit $2 mit dem Teil nach CMAT und zwei CR\LF.

Der Ausdruck funktioniert mit dem Lyricstext, dem mein Beispiel zu Grunde liegt, allerdings folgender Ausnahme:

Es wird “$2” vor den Text des Absatzes eingefügt, der auf den entfernten Text folgt. Das liegt wohl an dem Backslash vor $2. Ohne funktioniert es, allerdings auch generell ohne \$2.

Das Problem allerdings ist wohl ein Missverständnis, denn CMAT ist kein konstanter Text, der das Ende des zu entfernenden Textes bestimmt. Leider ist das Ende immer variabel. M.E. kann das Ende nur bestimmt werden durch das 2. Vorkommen eines doppelten CR\LF im zu entfernenden Textes.

Dann probier mal:
$regexp(%unsyncedlyrics%,(.*)^See .*?\r\n\r\n.*?\r\n\r\n(.*),$1\r\n$2)

Das funktioniert.
Soweit ich den Ausdruck verstehe, löscht er alles von “See” bis zum 2. Doppel-CR\LF.
Ich habe meine Probleme damit, denn diese Voraussetzung ist wohl nicht genau genug um Fehlanwendungen zu verhindern.

Ich habe mal gerade nach unsyncedlyrics MATCHES "(.)^See .?\r\n\r\n.?\r\n\r\n(.)" gefiltert und bekam zig Ergebnisse, die nicht den zu entfernenden Text beinhalteten und bei einer entsprechenden Aktion den Lyricstext durch teilweises Textlöschen vermurksen würden.

Ließe sich das konstante und wohl kaum anderweitig vorkommende “You might also like” nicht irgendwie als Voraussetzung einbauen, um die Treffsicherheit der Aktion sicher zu machen?

Dann probier mal:
$regexp(%unsyncedlyrics%,(.*)^See .*?\r\n\r\nYou might also like.*?\r\n\r\n(.*),$1\r\n$2)

Danke. Das wars wohl. Einige Tests mit zuvor gefilterten UNSYNCEDLYRICS, die nicht den zu entfernenden Textabschnitt aber “See” usw. enthielten, verliefen erfolgreich und wurden ohne Änderung belassen.