Einführung in die Regulären Ausdrücke

Mit regulären Ausdrücken (bzw. regular expressions, regexp) kann man Strings prüfen.
Ein gutes Beispiel ist z.B. der String "apfelbaum"

Nun kann ich folgendes prüfen: ereg("^a.*m$",$string); würde TRUE liefern, da der String mit a beginnt, dann beliebig viele Zeichen folgen und anschließend der String mit einem m abschließt.

Gehen wir nun etwas tiefer in die Materie:

und einen bestimmten Zeichenbereich einzugrenzen benutzt man oft eckige Klammern. Dazu mal ein Beispiel: [a-zA-Z]{0,10} dieses Muster gilt für alle Strings mit Zeichen von a bis z und von A bis Z die 0 bis 10 Zeichen lang sind. Also ein leerer string würde auch TRUE ausgeben.
Wie Ihr vielleicht schon bemerkt habt sind die geschweiften Klammern Mengenangaben.

{n,m} Bedeutet n bis m Wiederholungen
{n} Bedeutet n Wiederholungen

Hierfür gibt es auch Abkürzungen

* ist die Abkürzung für {0,} (also 0 bis unendlich Wiederholungen)
+ ist die Abkürzung für {1,} (also 1 bis unendlich Wiederholungen)
? ist die Abkürzung für {0,1} (Also 0 oder exakt 1 Zeichen)

Weitere Sonderzeichen sind Folgende:

. Beliebiges Zeichen
^ Anfang einer Zeichenkette
$ Ende einer Zeichenkette


Kommen wir zu weiteren Beispielen:

Postleitzahl: ^[0-9]{5}$
Vor- und Nachname: [a-zA-ZäöüÄÖÜ]+ [a-zA-ZäöüÄÖÜ]+
Strasse und Hausnummer: [a-zA-ZäöüÄÖÜ \.]+ [0-9]+[a-zA-Z]?
Emailadresse: [a-zA-Z0-9_-\.]+@[a-zA-Z0-9\.]+[a-zA-Z]{2,4}

Wie man eindeutig Bei der Emailadresse sieht gibt es ein neues Zeichen, welches aufgetaucht ist, nämlich der Backslash. Dieser dient zum "escapen" von Sonderzeichen. Da der Punkt in Regulären Ausdrücken für jedes beliebige Zeichen gilt muss er escaped werden. Genauso wie die folgenden Zeichen ^, $, *, ?, +, [, ], (, ), {, }.

Ich rate dazu mit den erlangten Informationen über Reguläre Ausdrücke schonmal ein bisschen rumzuspielen bevor man sich das zweite Tutorial durchliest. Übung macht den Meister :)
Kategorien:
.htaccess | Antispam | Java | Java Script | PHP Tutorials | RegExp | Suchmaschinen