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 \fSeitenvorschub \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: 03.11.2004 |