Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L})

MrMcNiki

Mitglied
Hallo,

habe mich angefangen mit regex und co. zu beschäftigen.
Nun frage ich mich, wie ich ein Zeichen (z.B. "a") zu Beginn eines Wortes "verbieten" kann, wenn ich alle Buchstaben aus p{L} (also alle möglichen Umlaute der verschiedenen Sprachen) benötige.
Meine Idee einfach alle Zeichen nicht zu zulassen und Ausnahmen zu erlauben ist ja leider nicht ganz Zielführend,
denn mit ^[a-zA-Z0-9äöüÄÖÜ][//p{L}0-9]* würde bei "é" als erstes Zeichen im Wort beim matchen "false" ausgegeben.

Gibt es da irgendwie einen Trick oder muss ich einfach das erste Zeichen irgendwie gesondert betrachten (z.B. in einem Programm dann mit if)
 
^[^a].*$ matched alles, was NICHT mit einem a beginnt.
Das relevante hier ist [^a]. Eine Optionsgruppe, die mit einem ^ beginnt, bedeutet "alles außer:".
ich glaube ich habe meine Frage leider etwas zu unpräzise gestellt: die von dir geteilte Lösung klappt ist ja korrekt, wenn man kein a am Anfang möchte, aber leider sind ja (im Gegensatz zu der formalen Sprache p{L}) auch Sonderzeichen wie "%" oder ";" erlaubt, was ich eigentlich nicht haben möchte.
 
dir geteilte Lösung
geteilt... ein Wort, bei dem es mich schüttelt.

aber leider sind ja (im Gegensatz zu der formalen Sprache p{L}) auch Sonderzeichen wie "%" oder ";" erlaubt, was ich eigentlich nicht haben möchte.
Du willst also nicht nur das a am Anfang verbieten, sondern auch andere Zeichen? Dann schreibst die Zeichen halt dazu.
[^abc] = jedes Zeichen alles außer abc
Wenn Du "jedes Zeichen" noch einschränken willst:
[[^abc]&&\\p{L}]
 

Zurück
Oben