Als kleinen Einblick hinter die Kulissen unseres geheimnisvollen Tuns – der Software-Entwicklung – gibt es heute die Vorstellung nahezu unentbehrlicher kleiner Helferlein, der regulären Ausdrücke:
Ständig bringen die Anforderungen an eine Software es mit sich, dass Eingaben von Nutzern formal validiert werden müssen.
Hier ist immer wieder eine Entscheidung zu treffen: Einerseits kann man für jedes zu validierende Feld eine kleine Funktion schreiben, was sehr viel Zeit in Anspruch nehmen kann, oder man nutzt eben Reguläre Ausdrücke.
Reguläre Ausdrücke sind eine Art Beschreibungssprache, die beim Programmieren für viele Problemlösungen Verwendung findet,
insbesondere dann, wenn es darum geht, Zeichenketten (Strings) zu verbearbeiten, zu überprüfen oder in ihnen nach Teilzeichenketten zu suchen.
Reguläre Ausdrücke sind ein sehr effizientes Mittel zur Verarbeitung von Texten und Daten. Sie erleichtern das Validieren von Eingaben des Benutzers erheblich.
So können Fehleingaben schnell und einfach erkannt und abgefangen werden.
Reguläre Ausdrücke findet man in fast allen Programmiersprachen, seien sie objektorientiert oder nicht.
Beispiele wären PHP, Java, C#, VB.Net und Delphi, um nur einige zu nennen.
Nehmen wir das Beispiel der Validierung einer IPv4 -Adresse.
Hier müsste man ohne Reguläre Ausdrücke eine Vielzahl von Operationen durchführen, um allein die syntaktische Richtigkeit zu prüfen.
Beispiel für eine ausprogrammierte Lösung:
'Funktionsaufruf
prüfeIP("192.168.100.10")
'Funktion zum Prüfen der IP-Adresse (einfaches Beispiel)
Private Function prüfeIP(ByVal p1 As String) AS Boolean
'splitten am Punkt
Dim IPArray() As String = p1.Split(".")
Dim Segment As Integer = Nothing
'ermitteln ob es 4 Segmente sind
If IPArray.Length = 4 Then
'in der Schleife alle vier Segmente durchlaufen
For i As Integer = 0 To IPArray.Length - 1
'prüfen ob die Zahl im Gültigkeitsbereich liegt
If IPArray(i) < 1 And IPArray(i) > 254 Then
Return False
End If
Next
Else
Return False
End If
Return True
End Function
Beispiel für den „Regulären Ausdruck“:
'erzeugen des Regex Objektes
Dim regEx As System.Text.RegularExpressions.Regex = _
New System.Text.RegularExpressions.Regex("\b(?:\d{1,3}\.){3}\d{1,3}\b")
'ausführen des Ausdrucks
Dim isIP as Boolean = regEx.IsMatch("192.168.100.10")
Wie man sehen kann, erledigt der Regulärer Ausdruck dies in einem Arbeitsschritt, wenn man das Erzeugen des Objektes nicht mitzählt.
Hieran ist zu erkennen, dass ein Regulärer Ausdruck viele Zeilen Code spart und viele mögliche Fehlerquellen ausschliesst.
Allerdings setzt so ein Regulärer Ausdruck ein wenig Denksport voraus.
Fazit: Man sollte sich immer Gedanken machen, ob eine Funktion, die ein Feld validieren soll, nicht auch als Regulärer Ausdruck aufgebaut werden kann.
Und zum Schluss noch einige Reguläre Ausdrücke und Links und Seiten, die sich mit diesem Thema näher beschäftigen.
Beispiele für „Reguläre Ausdrücke“:
Überprüfung Datumsformat TT.MM.JJJJ
^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$
Überprüfung auf eine (ganze) Zahl
^([0-9] )([0-9]*)$
Überprüfung, ob es nur Buchstaben sind (hierfür gibt es auch Zeichenklassen)
^([a-zA-Z])( [a-zA-Z]*)$
Überprüfung IPAdresse
\b(?:\d{1,3}\.){3}\d{1,3}\b
Einige Links
Wiki:
http://de.wikipedia.org/wiki/Regulärer_Ausdruck
Mit dem RegExr ist der Leser herzlich aufgerufen, selbst ein wenig zu spielen:
Zum Testen:
http://gskinner.com/RegExr/
Weiteres:
http://blog.l-mobile.com/article/sammlung-regulaerer-ausdruecke