Reguläre Ausdrücke
Inhaltsverzeichnis |
Was sind Reguläre Ausdrücke und wofür sind sie gut?
RegEx (Regular Expressions = dt. reguläre Ausdrücke) sind Muster (engl. Patterns) die verwendet werden um Zeichenketten (engl. strings) zu durchsuchen. Das Prinzip funktioniert so, dass man zum Beispiel eine Zeichenkette durchsucht nach dem Muster "finde Text der mit 'Hallo, ' beginnt und mit ', wie geht es dir?' aufhört, was dazwischen steht ist egal". Dazwischen könnte dann beispielsweise [irgend ein] Name stehen.
Mit dem Ergebnis einer solchen Suche lässt sich aber noch mehr Anfangen als die bloße Erkenntnis ob in einer Zeichenkette etwas derartiges vorhanden ist oder nicht: Man kann das Ergebnis ausführlich bearbeiten, zum Beispiel kann man bestimmte Teile einer Zeichenkette ersetzen, extrahieren, formatieren, und, und, und.
Dank RegEx ist es also möglich zum Beispiel E-Mail-Adressen auf ihre Gültigkeit zu überprüfen, URLs automatisch zu verlinken, Text-Smilies in Bild-Smilies umzuwandeln, und so weiter und sofort. Egal wie professionell ein Script werden soll, man kommt um RegEx einfach nicht herum.
reguläre Ausdrücke und PHP
In PHP stehen 2 Arten von Funktionen zur Verfügung die RegEx unterstützen, beide haben ihre Vor- und Nachteile, und signifikante Unterschiede: In PCRE-Funktionen (Perl-Compatible Regular Expression Funktionen) kann man reguläre Ausdrücke nach Perl-Syntax Verwenden (was das ist, dazu später mehr) und Posix-extended RegEx-Funktionen (Posix erweiterte RegEx-Funktionen), in denen man POSIX 1003.2-Syntax verwenden kann (dazu später auch mehr).
PCRE-Funktionen
| Funktion | Beschreibung |
| preg_match | Zum Durchsuchen einer Zeichenkette |
| preg_match_all | Zum Durchsuchen einer Zeichenkette |
| preg_replace | Zum Durchsuchen und Ersetzen in Zeichenketten und Arrays |
| preg_replace_callback | Spezielle Form von preg_replace() |
| preg_split | Funktioniert wie explode(), mit dem Unterschied das man auch RegEx benutzen kann. |
| preg_quote | Funktioniert wie addslashes(), bloß für RegEx-Zeichen |
| preg_grep | Durchsucht ein Array und gibt die Suchergebnisse als Array zurück |
Posix-extended RegEx-Funktionen
Diese Funktionen werden vermutlich ab PHP 6 nicht mehr standardmäßig vorhanden sein, können aber bei bedarf per PEAR/PECL nachinstalliert werden. Die Perl-Kompatiblen Funktionen sind also zu bevorzugen, auch weil sie schneller zu Werke gehen.
| Funktion | Beschreibung |
| ereg | Zum Durchsuchen eines Strings |
| ereg_replace | Zum Durchsuchen und Ersetzen in einem String |
| eregi | Zum Durchsuchen eines Strings, case insensitive (Groß/Kleinschreibung wird ignoriert) |
| eregi_replace | Zum Durchsuchen und Ersetzen in einem String, case insensitive |
| split | Funktioniert wie explode, mit dem Unterschied das man auch RegEx benutzen kann. |
| spliti | ZFunktioniert wie split, case insensitive |
| sql_regcase | Erstellt einen RegEx, der für die Suche nach dem angegebenen Wort verwendet werden kann. |
Tutorial
Links
- http://fadth-design.ch/regtest/ - Hochentwickelter Online Tester für pcre-kompatible Ausdrücke (PHP und Javascript)
- http://www.weitz.de/regex-coach/ - The Regex Coach von Edi Weitz
- http://www.bastian-bergerhoff.com/eclipse/features/web/QuickREx/toc.html - Eclipse Plugin QuickREx
- (http://www.easyeclipse.org/site/plugins/quickrex.html) - als EasyEclipse Plugin
- http://www.regextester.com/ - Online REGEx Tester
- http://www.steenet.de/html/regextester.html - ein kleines Tool zum testen von regulären Ausdrücken
- http://www.christophm.de/software/RegExTester/ - RegExTester von Christoph A. Müller
- http://vsrv.de/regext/regextester.shtml - Online Regex Tester
- http://www.toolusersoft.com/regextest/ - RegExTest von Tool User Software für den Mac
- http://www.quanetic.com/regex.php - Regular Expression Online Tester von Quanetic Software, verwendet PHP
- http://regexlib.com/RETester.aspx - Online RETester von Regular Expression Library (RegExLib.com), verwendet .NET
- http://www.regexbuddy.com/ - KOMMERZIELLER RegexBuddy