Alexander (HH): umlaut in regulärem Ausdruck

Beitrag lesen

Moin Moin!

@@Alexander (HH):

nuqneH

»» Ohne Locale zählen ä und ß als Nicht-Wortzeichen, mit deutscher Locale zählen sie als Wortzeichen.

Hm, das ist eigentlich nicht das, was man will.

In aller Regel doch. Man arbeitet zu einem Zeitpunkt nur mit einer Sprache. In den Sonderfällen, in denen man mehrere Sprachen in einem String/in einer Datei hat, muß man den String/die Datei nach Sprachen trennen und dann jeweils auf die passende Locale umschalten.

Es wäre natürlich einfacher, wenn man einem Scalar einen Satz Locale-Daten mitgeben könnte, der dann z.B. bei RegExps automatisch benutzt wird. Vielleicht in Perl6. Bis dahin würde ich bei einem Programm, dass massiv mit Locale und mehreren Sprachen arbeitet, mir vermutlich ein String-Objekt basteln, dass genau diese Eigenschaft hat, und das z.B. auch eine eigene Substitutionsmethode (s///) hätte.

Das hieße doch, bei deutscher Locale wäre 'ä' ein Wortzeichen, 'д' jedoch nicht. Bei russischer Locale andersrum. Für gemischtsprachige Texte ziemlich unbrauchbar.

Das Locale-System ist nicht perfekt. Das ist sogar als Bug dokumentiert.

Gibt es auch eine Einstellung, bei der alle Buchstaben aller Schriften (lateinisch, kyrillisch, griechisch, hebräisch, arabisch, chinesisch, japanisch, …) als Wortzeichen zählen?

Man könnte sich eine neue Locale zusammenbasteln, die wenigstens die für das Projekt benötigten Sprachen zusammenmischt. Locale ist aber nicht nur für die Anpassung der CTYPEs da (LC_CTYPE), sondern macht mehr: Datumsformate (LC_TIME, d/m/y, m/d/y oder y/m/d?), Zahlenformate (LC_NUMERIC, 10.000.000 oder 10,000,000 oder 1,00,00,00?), Währungsformate (LC_MONETARY, $-100,00 oder -100,00$ oder 100,00$-?) und Sortierung bzw. Case-Umwandlung (LC_COLLATE, ä als a oder ä als ae oder ä nach z? Was ist das Zeichen für uc('ß')? Was ist das Zeichen für uc('i') -- im Türkischen ein I mit einem Punkt darüber!). Da wird es dann schon wieder schwierig. Wie ist *DAS* Zahl-, Währungs- und Datumsformat für ALLE Sprachen? Wie ist *DIE* Sortierreihenfolge für alle Sprachen?

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".