Reguläre Ausdrücke (regular expressions)
In Java können reguläre Ausdrücke (regular expressions) seit Version 1.4 direkt geparst werden, ohne daß man zusätzliche Bibliotheken / Hilfsklassen einbinden muss. Hierfür dient das Paket java.util.regex
. Damit kann man sehr einfach mit regulären Ausdrücken arbeiten.
Mit Hilfe von regulären Ausdrücken kann man prüfen, ob ein String einem vorgegebenen Pattern (=Muster) entspricht. Ein typisches Beispiel ist die Prüfung, ob eine Benutzer-Eingabe einer prinzipiell korrekten E-Mail-Adresse entspricht. Dazu muss die Eingabe aus mehreren Zeichen bestehen, wobei ein einzelnes @-Zeichen und später ein Punkt enthalten sein muss, und dazwischen sowie davor und danach weitere Zeichen stehen (z. B. xy@irgendwo.de). Mehrere Punkte sind erlaubt, mehrere @-Zeichen hingegen nicht. Hinter dem letzten Punkt dürfen nur noch Buchstaben stehen.
Will man die Korrektheit einer solchen Eingabe prüfen, muss man das Pattern für E-Mail-Adressen im Programmcode hinterlegen und dann die Benutzereingabe gegen dieses Pattern matchen (=prüfen).
Die folgende Methode implementiert eine sehr einfache Version einer solchen Prüfung:
// wenn immer das gleiche Pattern verwendet wird: besser vorher compilieren
return (Pattern.matches("^[.&&[^@]]+@[.&&[^@]]+\.[a-zA-Z]+$", email));
}
Dieses Beispiel soll erst einmal nur zeigen, wie reguläre Ausdrücke und Patterns prinzipiell funktionieren. Das Beispiel ist noch nicht ausgereift, weil weitere Kriterien zu prüfen sind (beispielsweise dürfen Domains nicht mit einem Punkt beginnen, und viele Sonderzeichen sind in EMail-Adressen nicht erlaubt usw.).
Anstatt aber den Ausdruck zu optimieren, schauen wir uns zunächst die Funktionsweise des Patterns genauer an:
- Das führende Dach-Zeichen "^" bedeutet, daß das nachfolgende Pattern direkt am Beginn eines Ausdrucks gefunden werden muss. Damit wird verhindert, daß die Eingabe zwar eine prinzipiell gültige EMail-Adresse enthält, diese jedoch in weiterem, ungültigen Text "versteckt" ist.
- Es folgt die Definition für den ersten Teil der EMail-Adresse (den Benutzernamen), also der Teil, der vor dem Klammeraffen steht: der Punkt steht dabei für jedes beliebige Zeichen, wobei mit &&[^@] der Klammeraffe ausgenommen wird. Das danach folgende Plus-Zeichen bedeutet, daß ein solches Zeichen beliebig oft, jedoch mindestens einmal vorkommen muss.
- Es folgt der obligatorische Klammeraffe, der in jeder EMail-Adresse enthalten sein muss.
- Nun folgt der Domain-Name, der wiederum aus beliebig vielen (aber mindestens einem) Zeichen bestehen kann und ebenso wie der Account-Name keinen Klammeraffen enthalten darf.
- Es folgt der Punkt vor der Länderkennung. Der Punkt muss mit einem Backslash gequotet werden, weil ein alleinstehender Punkt für jedes beliebige Zeichen stehen würde (anstatt eben nur für einen Punkt).
- Es folgt die Länderkennung, welche nur aus Buchstaben bestehen darf (mindestens einer).
- Das abschließende Dollar-Zeichen markiert das Ende des Textes. Damit wird vermieden, daß die Eingabe nur mit einer gültigen EMail-Adresse beginnt, an deren Ende aber weiterer (ungültiger) Text stehen könnte.
Eine Übersicht über die vollständige Syntax (auf Englisch) gibt es direkt in der Pattern-Java-Dokumentation.
Nach oben, Inhaltsverzeichnis, Impressum |
Admin: Artikel editieren |