Worttrennung bei Großschreibung

rernanded

Erfahrenes Mitglied
Hallo

mit dem folgenden Code kann ich gut trennen wenn Substantive zusammengeschrieben sind, nämlich immer dann wenn ein Großbuchstabe kommt. Allerdings werden auch Eigennamen wie NRW in N R W getrennt.
Ich müsste also eine regex-Ergänzung einsetzen, dass nur getrennt wird wenn auf den Großbuchstaben ein kleiner folgt.

MONI

PHP:
$src = "HalloIhrLiebenNRW-ler";
$array = preg_split('/(?=[A-Z])/', $src);
$final_result = implode(' ', $array);
echo $final_result;
 

Yaslaw

n/a
Moderator
Code:
/(?=[A-Z](?:[a-züäö]|$))/
Also Grossbuchstabe gefolgt von einem Kleinbuchstaben (inkl Umlaute) oder vom Text-/Zeilenende
 

rernanded

Erfahrenes Mitglied
@Yaslaw
Danke Dir, klappt super. Nur ein klitzekleines Problem. Es wird auch getrennt bei Aha-Oho: In Aha- Oho.
Wenn also ein Bindestrich vor dem Grossbuchstaben steht auf den ein kleiner Buchstabe folgt.
 

Yaslaw

n/a
Moderator
\B(?=[A-Z](?:[a-züäö]|$))

Mit dem \B vorne dran, kann man sicherstellen dass es ncith am Anfang eines Wortes ist.
 

rernanded

Erfahrenes Mitglied
Suppi, danke. Funktioniert. Übrigens mit \W gehts auch, denn es tauchen auch Textstellen wie "... am besten mit Wasser.Töpfe musst Du dann mit ..." auf. Allerdings ist \W nicht optimal denn es gibt wieder AhaOho die dann nicht getrennt werden. Hast Du eine Idee für eine Kombi von \B und \W?
 
Zuletzt bearbeitet: