Landesspezifische Zeichen

Bei der Formulierung von regulären Ausdrücken gibt es im Zusammenhang mit dem Thema landesspezifische Buchstaben und Sonderzeichen ein Problem: es muß bekannt sein, in welchem Zeichensatz der zu untersuchende Druckdatenstrom vorliegt. Die im Deutschen verwendeten Umlaute können je nach Zeichensatz ganz unterschiedliche interne Codes haben.

Im <strong>print<span style="color:red;">2</span>forms</strong>-System werden die regulären Ausdrücke, wie alle anderen textuellen Eingaben auch, im Zeichensatz ISO-8859-1 angenommen und auch so abgespeichert. Taucht also im Ausdruck ein 'Ä' auf, wird der interne Code hexadezimal 'C4' verwendet.

Man muß sich also darüber im Klaren sein, daß mit so einem Ausdruck wunderbar in einem von einem Windows-System erzeugten Druckauftrag gesucht werden kann, daß aber so in einer Host-Ausgabe niemals ein Muster erkannt wird, weil dort ein 'Ä' als hexadezimal '8E' kodiert ist.

Prinzipell könnte <strong>print<span style="color:red;">2</span>forms</strong> diesen Fall natürlich erkennen, weil es ja den Druckdatenstrom analysiert hat, und demzufolge weiss, in welchem Zeichensatz die Druckdaten vorliegen. Doch dies verlangt eine ganze Reihe von Konvertierungstabellen, die im Moment noch nicht vollständig zur Verfügung stehen.

Von daher sollten alle landesspezifischen Zeichen und Sonderzeichen, die nicht im 7-Bit ASCII-Zeichensatz enthalten sind, nur mit Bedacht innerhalb von regulären Ausdrücken eingesetzt werden.


Ein weiteres Problem taucht im Zusammenhang mit dem Muster '@' auf. In der Regel ist es gewünscht, daß dieses Muster ganz generell Buchstaben erkennt, also auch landesspezifische. Insofern ist '@' nicht wirklich eine Abkürzung für '[a-zA-Z]', sondern viel mehr.

Auch in diesem Fall benötigt <strong>print<span style="color:red;">2</span>forms</strong> eine ganze Reihe von weiteren Tabellen, um für die jeweiligen Zeichensätze die Codes zu ermitteln, an denen Buchstaben stehen. Diese Tabellen stehen ebenfalls aktuell nicht zur Verfügung.

Um aber in der täglichen Praxis die regulären Ausdrücke nicht unnötig kompliziert werden zu lassen, ist es in der aktuellen Implementierung des<strong>print<span style="color:red;">2</span>forms</strong>-Clients und -Gateways so, daß diese für das Muster '@' auch alle Zeichen im Bereich der hexadezimalen Codes '80' bis 'FF' akzeptieren. Dies ist zugegeben natürlich nicht ganz korrekt, weil in diesem Codebereich auch einige Sonderzeichen liegen, die definitiv nicht zu den Buchstaben im klassischen Sinn gehören, aber es führt in allen bisherigen Anwendungen der regulären Ausdrücke zu befriedigenden Ergebnissen.


Eine gute Praxis bei der Formulierung regulärer Ausdrücke ist demnach, keine landesspezifischen Zeichen als Literale einzusetzen, und beim Extrahieren von Textfragmenten, die eventuell landesspezifische Zeichen enthalten können, nur die Muster '.' und '@' zu verwenden.

Hinweise