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.


GreeboU  02.05.2022, 19:25

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
GreeboU  02.05.2022, 18:58

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

0
kdwi2 
Beitragsersteller
 02.05.2022, 18:56

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

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

Fnfnnffk  02.05.2022, 19:16

Was genau sind looksrounds?

0
Palladin007  02.05.2022, 19:30
@Fnfnnffk

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

0