jsp-develop.de presents:

Reguläre Ausdrücke

von Marc,  13.01.2002 14:21:28

Ein mächtiges Werkzeug zum Überprüfen von Zeichenketten, bzw. zum Suchen und Ersetzen von Zeichenketten bieten die regulären Ausdrücke. Die UNIX-User werden müde lächeln ebenso die Nutzer von Perl und PHP, aber endlich ist es bald soweit und auch JAVA wird ab dem JDK 1.4 mit diesem Werkzeug beglückt (java.util.regex).

Hier ein kleines Beispiel zum Überprüfen der Syntax einer eMail-Adresse:
boolean b = Pattern.matches("^[a-z0-9]+((\\.|!|_|\\+|\\-)[a-z0-9]+)*@([a-z0-9]+(\\.|\\-))+[a-z]{2,}$", "name@host.de");

Es folgt eine kleine Übersicht über die grundsätzlichen Elemente der regulären Ausdrücke und ein paar kleine Beispiele. Am besten dann einfach mal mit einem kleinen Script oder Java-Programm ausprobieren.


Character-Klassen
[abc]    Zeichen a, b oder c
[^abc]    Alle Zeichen ausser a, b oder c
[a-zA-Z]  Alle Klein- und Grossbuchstaben

Vordefinierte Character-Klassen
\d  Eine Zahl [0-9]
\D  Keine Zahl [^0-9]
\s  Leerzeichen [ \t\n\x0B\f\r]
\S  Kein Leerzeichen [^\s]
\w  Ein Buchstabe [a-zA-Z_0-9]
\W  Kein Buchstabe [^\w]

Metazeichen
\  Das folgende Zeiche Zeichen verliert seine Sonderfunktion
.  Beliebiges Zeichen
|  Alternative
() Gruppierungen
[] Zeichenbereich

Quantifikatoren
*    0 bis n-mal
+    mindestens ein bis n-mal
?    optional ( 0 bis n-mal)
{n}  genau n-mal
{n,}  mindestens n-mal
{n,m} zwischen n- und m-mal

Positionierung
^  Anfang der Zeile
$  Ende der Zeile
\b  Wortanfang
\B  Wortende
\A  Anfang einer Zeichenkette
\Z  Ende der Zeichenkette


Und nun zur grauen Theorie ein paar Beispiele:

^j.*e$      muss mit j beginnen und mit e aufhören (jsp-.develop.de)
^[a-z0-9]+  beginnt mit beliebig vielen Kleinbuchsteben und Zahlen
[+-]?[0-9]+[,.][0-9]+  Zahl mit Dezimaltrennzeichen (z.B. -2635,98)
[a-z]{2,}$  mindestens zwei Kleinbuchstaben am Ende

Hier noch ein cooles Tool zum rumspielen mit regulären Ausdrücken:
http://weitz.de/regex-coach/


Mehr zum Thema reguläre Ausdrücke:

http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm
http://www.heise.de/ix/artikel/1998/11/178/
http://www.oreilly.de/catalog/regexger/
URL dieses Beitrags:
http://www.jsp-develop.de/forumbeitrag/view/663/