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.