Wir fangen mit dem einfachsten Beispiel an: Die Suche nach einem bestimmten Zeichen:
#!/usr/local/bin/perl -w
$t = "Demo-Zeichenkette";
if($t =~ /e/) { print "true\n" } else { print "false\n" }
|
Hier ist der reguläre Ausdruck nur der Buchstabe "e" und der Operator "=~" veranlaßt eine Suche nach diesem Zeichen in dem String $t. Diese Suche beginnt immer am Anfang einer Zeichenkette, so daß sie schon beim zweiten Zeichen erfolgreich ist ('Demo-Zeichenkette'); die Ausgabe des Programms ist also "true".
Anstelle eines Zeichens können auch beliebig viele gesetzt werden - gesucht wird dann nach dieser Folge von Zeichen:
#!/usr/local/bin/perl -w
if("Leder" =~ /ede/) { print "true\n" } else { print "false\n" } # Test 1
if("Eder" =~ /ede/) { print "true\n" } else { print "false\n" } # Test 2
if("Gerade" =~ /ede/) { print "true\n" } else { print "false\n" } # Test 3
|
Dieses Skript liefert nur in dem ersten Test "true", ansonsten immer "false", da der reguläre Ausdruck ede genau passen muß. D.h., es wird hier auf Groß-/Kleinschreibung geachtet (e, d und e irgendwo im durchsuchten String stehen (
Zu beachten ist, daß nicht nach jedem Zeichen einfach gesucht werden kann wie im obigen Beispiel, da einige in regulären Ausdrücken besondere Bedeutung haben. Es handelt sich dabei um
. ? * + ^ $ | \ ( ) [ {
sowie um das Zeichen, das als "Klammer" um den regulären Ausdruck verwendet wird (meistens der Schrägstrich "/"). Will man nach diesen Symbolen suchen, so muß man einen Backslash ("\") voranstellen:
#!/usr/local/bin/perl -w
if("1...3" =~ /\.\./) { print "true\n" } else { print "false\n" } # Test 1
if("/usr/bin" =~ /\/usr\//) { print "true\n" } else { print "false\n" } # Test 2
if("/usr/bin" =~ m#/usr/#) { print "true\n" } else { print "false\n" } # Test 3
if('??\$' =~ /\\\$/) { print "true\n" } else { print "false\n" } # Test 4
|
Diese Tests liefern alle "true". Wie man beim Vergleich von \$ ein einfaches $ wird.
Für einige häufig gebrauchte Zeichen, die sich schlecht direkt darstellen lassen, gibt es besondere Symbole:
Außerdem lassen sich auch alle Zeichen durch ihren ASCII-Code (in oktaler Darstellung) schreiben, indem man dem 3-stelligen Code einen Backslash voranstellt (so ist beispielweise "
Zeichen Bedeutung \nneue Zeile \rWagenrücklauf \fZeilenvorschub \tTabulator \aSignalton \eEscape
\101" äquivalent zum Buchstaben "A"). Anmerkung: es müssen immer drei Ziffern sein - also notfalls vorne mit einer oder zwei Nullen auffüllen. Eine ganz besondere Bedeutung hat in regulären Ausdrücken der Punkt ".": er steht für jedes beliebige Zeichen (mit Ausnahme des newline "\n" - es sei denn, man verwendet bei dem regulären Ausdruck die single line-Option s).
#!/usr/local/bin/perl -w
$t = "1.Spalte\t2.Spalte"; # mit Tabulator \t
if($t =~ /e\t2/) { print "true\n" } else { print "false\n" } # Test 1
if($t =~ /\t\t/) { print "true\n" } else { print "false\n" } # Test 2
if($t =~ /p...e/) { print "true\n" } else { print "false\n" } # Test 3
|
true", da die Suche in der Mitte von $t erfolgreich ist. false" (keine zwei aufeinanderfolgenen Tabulatoren in $t).
| Autor: Eike Grote | Letzte Änderung: 02.10.1997 |