von Markus Christian Koch
An vielen Stellen kann der Gebrauch von regulären Ausdrücken das Programmiererleben erheblich vereinfachen. Allerdings ist der Einstieg in deren Gebrauch nicht so ganz einfach – aus diesem Grunde haben wir an dieser Stelle eine Kurzreferenz für Sie zusammengestellt, die so manches komplexe if-Gebilde ersparen kann.
| ^ | Anfang eines Strings |
| $ | Ende eines Strings |
| . | ein beliebiges Zeichen |
| n? | optional vorhandenes ‘n’ |
| n* | Kein oder mehrfaches Vorkommen von ‘n’ |
| n+ | Ein oder mehrere Vorkommen von ‘n’ |
| n{2} | Genau zweifaches Vorkommen von ‘n’ |
| n{2,} | Mindestens 2 oder mehrere Vorkommen von ‘n’ |
| n{2,4} | Mindestens 2, höchstens 4 Vorkommen von ‘n’ |
| () | Klammern für Ausdrücke |
| (n|a) | Entweder ‘n’ oder ‘a’ |
| [1-6] | eine Zahl zwischen 1 und 6 |
| [c-h] | ein Kleinbuchstabe zwischen c und h (c,d,e,f,g,h) |
| [D-H] | ein Großbuchstabe zwischen D und H (D,E,F,G,H) |
| [^a-z] | kein Vorkommen von Kleinbuchstaben zwischen a und z |
| [_a-zA-Z] | ein Unterstrich und ein beliebiger Buchstabe des Alphabets |
| [:space:] | Leerzeichen |
| \ | Escape-Zeichen, u.a. für ? ‘ ” - |
… und einige Beispiele:
eregi(“^([a-z\?\-]|[[:space:]])*$”, $textstring)
Ein String aus einer beliebigen Anzahl Kleinbuchstaben, Fragezeichen und Minuszeichen ODER einer beliebigen Anzahl Leerzeichen.
preg_match(“^([A-Z[:space:]]|[0-9])*$”, $textstring)
Ein String bestehend aus einer beliebigen Anzahl an Grossbuchstaben und Leerzeichen ODER nur aus Zahlen bestehend.
preg_match_all(“modules.php\?name=([/:\-\'{}()._&a-zA-Z0-9+=]*)”, $textstring, $list)
Ein String mit dem ein oder mehrfach enthaltenen Seitennamen “modules.php?names=” gefolgt von einer beliebig langen Zeichenkette. Diese darf alle alphanumerischen Zeichen 0-9, A-Z und a-z enthalten sowie runde Klammern, spitze Klammern, Punkte, Unterstriche, Und-Zeichen, Slashes, Doppelpunkte, Pluszeichen, Minuszeichen und Hochkommata. $list bezeichnet das Array, in dem welchem Informationen über die Fundstellen des gesuchten Ausdrucks gespeichert werden.
Innerhalb der Ausdrücke in eckigen Klammern und Doppelpunkten ‘[:' und ':]‘sind verschiedene Klassen an Zeichen möglich (standard character classes):
| alpha | A-Z, a-z |
| graph | jedes druckbare Zeichen außer Leerzeichen |
| lower | Kleinbuchstaben |
| upper | Großbuchstaben |
| cntrl | Steuerzeichen |
| jedes druckbare Zeichen inklusive Leerzeichen | |
| xdigit | Prüfung auf Hexadezimalwerte |
Einfache Typprüfungen an Strings lassen sich in PHP >=4.04 mit Hilfe der ctype_-Funktionen schneller realisieren als mit regulären Ausdrücken: unter den jeweiligen Namen der Standard Character Classes stehen die entsprechenden Funktionen ctype_alpha, ctype_graph, ctype_lower etc. zur verfügung. So prüft z.B. “if (ctype_lower($text)) {…}” ob der Inhalt der Variable $text ausschliesslich aus Kleinbuchstaben besteht. Trifft dies zu, so wird eine hier nicht weiter ausgeführte Prozedur eingeleitet.



[...] ich krigs einfach noch nicht hin, obwohl ich fleißig versuche, dieses Thema zu verstehen. Selbst PHP: Schnellreferenz reguläre Ausdrücke | PHP | Dr. Web Magazin konnte mir nicht helfen. Folgendes Problem: mit PHP-Code: [...]
[...] , SelfHTML , DrWeb , modrewrite Stichwörter: mod [...]
[...] vielleicht so? save150_comp_KG_rlow.rep[1-1000] PHP: Schnellreferenz regul