Wie kann ich ein Regex erstellen, der alles nimmt, außer diese bestimmten Wörter?

2 Antworten

Ok, mal schauen ob ich das richtig verstanden habe:

Du willst einen Match auf Wörter mit einem Großbuchstaben am Anfang und beliebig vielen kleinen Buchstaben danach... oder mindestens ein kleiner Buchstabe am Anfang, aber dann ein "en" am Schluss.

Das wäre dann so etwas hier:

^([A-Z][a-z]*|[a-z]+en)$

Testen kannst du das übrigens auf der Seite https://regex101.com/
Dort kannst du den regex in die obere Zeile eintragen und dann darunter testen ob dein Text richtig erkannt wird. Kopiere einfach mal deine gesamte Frag in das untere Feld und schaue nach ob alles so angezeigt wird wie du dir das vorstellst.

Nein, ich möchte ein match auf die Wörter, die das nicht erfüllen haha. Also die nicht mit einem klein Buchstaben Anfangen und mit en enden oder mit einem großbuchstaben und dann nur klein Buchstaben

0

Also umgekehrt als du geschrieben hast? Du hast geschrieben es soll so etwas wie "Hallo" nicht abfangen.

0

Ok, dann wäre das hier möglicherweise das richtige regex:

^([A-Z](?>\w*[A-Z0-9]+\w*)?|[a-z]+(?<!en)|en)$

Und falls du einen längeren Text und nicht nur ein Wort untersuchst, dann musst du auf Wortgrenzen prüfen, also etwa so:

\b([A-Z](?>\w*[A-Z0-9]+\w*)?|[a-z]+(?<!en)|en)\b

teste es mal

0

Das müsste mit Lookarounds (Lookahead und Lookbehind) funktionieren.

Oder Du matchst einfach das, was Du *nicht* willst und prüfst, dass die Bedingung *nicht* erfüllt wird.

Woher ich das weiß:Berufserfahrung

Was genau sind looksrounds?

0
@Fnfnnffk

Zwei fortgeschrittene Features von Regex
Die Suchmaschine deiner Wahl hilft dir sicher weiter ;)
Das Thema sprengt hier den Rahmen.

0

Was möchtest Du wissen?