Filtern nach String ohne begrenzenden white space

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.

Ist dabei
Dies ist mein gesuchter Text
fix immer gleich zwischen
a und [
oder
1 und $
oder
Space und c
eingeklemmt oder ist der variabel?

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.

Funktioniert sowas?
%unsnycnedlyrics% MATCHES "[^\s*]Dies ist mein gesuchter Text[^\s*]"

Nein. Bekomme damit kein positives Suchergebnis.

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.

Erkl√§rung f√ľr:
^[a|1|\s]Dies ist mein gesuchter Text[\[|\$|c]$

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

Wie ist es damit:

%UNSYNCEDLYRICS% MATCHES [\S]Dies ist mein gesuchter Text[\S]

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).

1 Like

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.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.