Kleinschreibung bestimmter Wörter


#1

Ich versuche gerade, eine erweiterbare Liste von Wörtern, die klein geschrieben werden sollen, mit Regular Expressions umzusetzen. Allerdings klappt das nicht so wie gewollt. Wenn beispielsweise im Titel die Zeichenfolge "Fire On The Water" auftaucht, dann wird daraus immer nur "Fire on The Water" gemacht. Wo liegt der Fehler?

Regular expression:  (a|by|from|of|off|on|the) 
Replace matches with:  \l$1

#2

" (a|by|from|of|off|on|the)(?= )"

Wenn du normal nach einem Leerzeichen am Ende suchst, bleibt der "Zeiger" ja hinter diesem stehen, der Suchbegriff fängt aber wieder mit einem Leerzeichen an.


#3

Danke, das ist natürlich logisch.
Für andere Leser zum Verständnis: Die beiden Zeilen in der Codebox haben noch jeweils ein Leerzeichen am Ende, was beim Posten hier im Forum automatisch entfernt worden ist.

Jetzt verstehe ich nur nicht ganz, was das Gleichheitsszeichen in Verbindung mit dem Fragezeichen macht. In der Hilfe zu den Regular Expressions taucht nämlich kein Gleichheitsszeichen auf. Außerdem habe ich jetzt nach der Anwendung hinter den gesuchten Wörtern nicht 1, sondern 2 Leerzeichen.


#4

Zum Ersetzen reicht dann " \l$1"

(?=Muster) nennt man positive lookahead
Die Hilfe beschreibt nicht den vollen Umfang. Du solltest im Internet nach mehr Infos suchen.
Die Syntax hier ist vergleichbar mit der von Perl.


#5

Prima, jetzt klappt es. Nur noch zum Verständnis: (?=MUSTER) sucht also nach der Zeichenfolge MUSTER und prüft, ob sie vorhanden ist, springt dann aber wieder zurück zum Ausgangspunkt der Suche? So interpretiere ich das jedenfalls momentan anhand des Ergebnisses.


#6

Der Zeiger befindet sich dann wieder vor MUSTER und von dort wird weiter gesucht.