Ich will nach Dateien filtern, die in UNSYNCEDLYRICS einen speziellen Text enthalten, der nicht unmittelbar am Anfang oder Ende an White Space angrenzt.
Beispiele:
aDies ist mein gesuchter Text[
1Dies ist mein gesuchter Text$
{Leerzeichen}Dies ist mein gesuchter Textc
sollen gefunden gefunden werden.
{Leerzeichen}Dies ist mein gesuchter Text{LFCR}
{TAB}Dies ist mein gesuchter Text
aDies ist mein gesuchter Text{LFCR}
sollen nicht gefunden werden.
Dieser Text ist immer gleich. Die a und [, 1 und $ usw. sind aber nur Beispiele für "Kein White space" und natürlich variabel.
Der Hintergrund ist: Ich habe einen ungewollten Text mitten in Songtexten, den ich bei Vorliegen der genannten Filterkriterien ohne vorheriges Anschauen automatisch per Aktion entfernen kann. Wenn allerdings vor oder nach dem Text White Space kommt, kann ich nur noch manuell arbeiten und muss mir alles genau ansehen.
Und wenn Du nur nach Vorkommen suchst, wenn der fixe Text mit einem der abschliessenden Zeichen [ $ c aufhört?
%UNSYNCEDLYRICS% MATCHES Dies ist mein gesuchter Text[\[|\$|c]$
In meinen Tests - die niemals alle erdenklichen Varianten enthalten können - funktioniert es dann auch mit (eigentlich nicht zwingend nötiger) führender Zeichenauswahl: %UNSYNCEDLYRICS% MATCHES ^[a|1|\s]Dies ist mein gesuchter Text[\[|\$|c]$
Ich habe die Ausdrücke mal auf eine Datei angewandt und festgestellt, dass sie nicht klappen.
Da ich mit regulären Ausdrücken nach wie vor auf Kriegsfuss stehe und eigentlich nichts ins Langzeitgedächtnis bekomme, wäre es nett, wenn Du den Ausdruck mal erklären könntest.
Ich habe nämlich den Verdacht, dass wir uns missverstehen. Deshalb nochmal eine Darstellung meinerseits:
In UNSYNCEDLYRICS steht bei mir bei unzähligen Dateien ein konstanter Text "Dies ist mein gesuchter Text", der nicht zum Songtext gehört sondern durch eine Websource eingestreut wurde. In den meisten Fällen ist dieser Text alleine ohne weiter folgenden unerwünschten Text in den Fliesstext des Songs eingestreut. Wenn das so ist, kann ich ihn einfach mit einer Replace-Aktion ersetzen.
Es gibt aber auch viele Fälle, in denen weiterer unerwünschter Text folgt, der variabel ist und nach dem ich deshalb nicht suchen kann.
Nun habe ich festgestellt, dass in den Fällen in denen "Dies ist mein gesuchter Text" alleine steht und kein weiterer variabler ungewünschter Text folgt, dieser immer direkt in den Fließtext eingebettet ist ohne dass am Anfang oder am Ende jegliche Art von white space ihn vom übrigen Songtext abgrenzt.
Beispiel:
I Love you more thanDies ist mein gewünschter TextI can tell
In allen übrigen Fällen, in denen vor oder nach dieser Textpassage white space auftritt folgt, wie ich festgestellt habe, immer weiterer variabler unerwünschter Text, den ich nie mehr (außer durch Durchlesen aller Lyrics) finden könnte, wenn ich generell "Dies ist mein gesuchter Text" löschen würde.
Ich muss also zunächst die Fälle finden, bei denen "Dies ist mein gewünschter Text" ohne White-space-Abgrenzung vorkommt, um den Text in diesen Dateien durch Aktion zu löschen. Ein nächster Schritt wäre dann nochmals nach der Textpassage zu filtern und die verbliebenen Dateien einzeln manuell zu korrigieren.
Am Anfang der Zeile muss entweder a oder 1 oder ein Leerzeichen stehen
dann muss "Dies ist mein gesuchter Text" folgen
am Ende der Zeile muss dann [ oder $ oder c stehen.
Du kannst ja mal versuchen, eine Text-Erklärung zusammenzustellen, wie das Deiner Meinung nach funktionieren könnte.
Dann können wir versuchen, einen regulären Ausdruck daraus zu erstellen.
Mein Verdacht hat sich bestätigt, dass wir uns völlig missverstanden haben, weil Du in meinen Beispielen, die genannten Zeichen (a,1,$,c..) für Konstanten gehalten hast. Auch der Zeilenanfang überhaupt spielt keine Rolle.
Es geht nur darum Dateien zu filtern, bei denen die Textstelle "Dies ist mein gesuchter Text" direkt vor oder nachher ohne trennenden white-space (CRLF, Space,TAB...) direkt von weiterem Text eingerahmt wird.
Siehe mein obiges Beispiel:
I love you more thanDies ist mein gewünschter TextI can tell
Der reguläre Ausdruck [\S] (GROSSES S) ist gleichbedeutend wie [^\r\n\t\f\v], matcht auf alles, was KEIN White Space ist (das beinhaltet auch CR, LF, Tab, FormFeed, Vertical White Space).
Danke. Das klappt prinzipiell. Auf \S (negiertes \s) hätte ich auch selber kommen können, weil ich es vor Jahren schon mal benutzt habe. Leider vergesse ich alles was ich nicht ständig benutze.
Lässt sich das auf das erwähnte "oder" einschränken?
Es treten Fälle auf, bei denen vor und nachher kein white space auftritt, aber auch Fälle bei denen nur vorher und nur nachher kein white space auftritt.
Ansonsten kann ich natürlich auch den Ausdruck 2 x nacheinander verändert anwenden.
Theoretisch schon, aber das wird sehr aufwändig mit Positive oder Negative Lookaheads/Lookbehinds. Das ist IMHO aber kaum mehr verständlich und nachvollziehbar (in ein paar Monaten oder Jahren schon gar nicht mehr).
Ich empfehle, die Varianten einzeln und nacheinander zu probieren.