Einführung
Wikipedia.de definiert reguläre Ausdrücke folgendermassen:
Ein regulärer Ausdruck (englisch regular expression, Abkürzung RegExp oder Regex) ist in der theoretischen Informatik eine Zeichenkette, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient
Reguläre Ausdrucke können im Chili in den Event-Actions implementiert und z.Bsp. für eine optimale Darstellung und bessere Lesbarkeit von Telefonnummern verwendet werden. Zuvor sind aber ein paar einführende Erklärungen notwendig. Was ist mit den oben erwähnten "Mengen" und "syntaktischen Regeln" gemeint.
Beginnen wir mit einem einfachen Beispiel: In einer Telefonnummer sollen zwei 00 zu Beginn durch ein + ersetzt werden. Das könnte man zwar auch mit der replace Funktion irgendwie hinbekommen, hier soll es aber um regxp gehen. Dieser ist hier sehr einfach und lautet
^00
Das Caret Zeichen ^ bedeutet beginnt mit ( das Gegenteil ist $, "789$" wäre dann ein String, der mit 789 endet).
Gehen wir weiter, wir suchen einen String, der mit einem Grossbuchstaben beginnt, und von Kleinbuchstaben gefolgt wird. Dazu benötigen wir also etwas, das Gross- bzw Kleinbuchstaben beschreibt. Der Begriff dafür ist "Character class", geschrieben wird das in eckigen Klammern [ ] , Zeichenfolgen können durch einen Bindestrich angegeben werden, Beispiele:
[A-Z] Grossbuchstaben
[a-z] Kleinbuchstaben
[0-9] Zahlen
[^A-Z] Keine Grossbuchstaben. Ein Caret innerhalb der [] bedeutet Negation.
[AEIOUaeiou] Eine Liste von Buchstaben, hier z.B alle Vokale
^[A-Z][a-z] Der oben gesuchte Ausdruck. Im Einzelnen : ^ Beginnt, [A-Z] Grossbuchstabe, [a-z] Kleinbuchstabe
Nun reicht ja "Beginnt" oder "Endet" nicht immer aus, manchmal ist es notwendig, Dinge wie "mindestens Einmal" , " 0 oder Einmal" , " 2 bis 4 mal" etc zu beschreiben. Der Fachbegriff hierzu lautet "Quantifizierer".
* beliebig oft, das kann auch kin mal sein
? 0 oder einmal
+ mindestens einmal
{n} n-mal
{min,max} Mindestens min mal, höchstens max mal
{0,max} 0 oder höchstens max mal
In den folgenden Beispielen werden die Telefonnummern durch Leerzeichen gegliedert und wenn mehrere Leerzeichen eingegeben sind, werden die automatisch gelöscht.
Die Ländervorwahl mit dem Pluszeichen und einem Leerzeichen (die Ländervorwahl für die Schweiz +41) wird als Präfix unter Variable Settings im Chili vordefiniert.
Ein regulärer Ausdruck /^[0-9]/g wird für eine globale Suche verwendet, um alle Zeichen in einer Zeichenfolge zu finden, die KEINE Ziffern sind.
Ein Zirkumflex ^ bedeutet eine Inversion: eine beliebige KEINE Ziffer.
Mit "replace" Funktion werden dann alle gefundene Zeichen durch den Leerstring ersetzt.
DIN-Norm +XX XX XXXXXXX.
Mithilfe des Ausdrucks (^[0-9]{2})([0-9]*) wird eine DIN 5008 Norm Formatierung erzeugt. Die Ortsvorwahl wird durch ein Leerzeichen von der Hauptnummer extrahiert.
Beispiel mit Gruppierung in 2-2-3-2-2 Blöcke +XX XX XXX XX XX.
Die Hauptnummer kann in 3er- und 2er-Rufnummernblöcke gruppiert werden. Dies erfolgt mit dem Ausdruck (^[0-9]{2})([0-9]{3})([0-9]{2})([0-9]{1,2})([0-9]*).
Insgesamt werden vier Zahlengruppen extrahiert: die Ortsvorwahl als 2er-Block und die Hauptnummer: 3er-, 2er-, 2er-Block.
Beispiel mit Gruppierung in 2-4-3-2-2 Blöcke +XX XXXX XXX XX XX
Dies erfolgt mit dem Ausdruck (^[0-9]{4})([0-9]{3})([0-9]{2})([0-9]{1,2})([0-9]*).