suit: [REGEX] /w Umlaute matchen

Beitrag lesen

Habe einige threads schon durchgelesen aber es gab nirgends eine richtige lösung.

Für welches Problem?

wie kann ich das besser machen mit ohne delimiter zu verwenden ?

Weißt du überhaupt, was ein Delimiter ist? Ich fürchte nicht ...

Du meinst vermutlich wie du das ohne Zeichenklasse machen kannst - die Antwort: gar nicht, du musst für dein vorhaben auf jeden Fall eine Zeichenklasse verwenden, weil du eine sehr eigenwillige Zusammenstellung von Zeichen hast. Du willst z.B. keine Unterstriche aber dafür Bindestriche, &-Zeichen und Doppelpunkte und weiterhin sämlich Whitespace-Zeichen

Es gibt vordefinierte Zeichenklassen \w z.B. matcht alle "Word"-Zeichen

Das ist üblicherweise gleichbedeutet zu [A-Za-z0-9_] und je nach Lokalisierungseinstellung ggf. noch weitere Zeichen - in deiner Liste fehlt übrigens das große scharfe S: ẞ

Was denn nun tatsächlich unter \w verstanden wird kann von PHP-Version zu Version unterschiedlich sein, von den Server-Einstellungen abhängen oder von den Einstellungen, mit denen PHP übersetzt ist. Ebenso ist entscheiden, ob im Ausdruck der Unicode-Modifier verwendet wird.

Eine andere Möglichkeit wäre \p{L} zu verwenden (trifft auf alle "Buchstaben" zu) - aber das matcht bedeutet mehr als du eigentlich erlauben willst und funktioniert zudem nur, wenn PHP mit "--enable-unicode-properties" übersetzt wurde.