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 \n
neue Zeile \r
Wagenrücklauf \f
Seitenvorschub \t
Tabulator \a
Signalton \e
Escape
\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: 30.07.2001 |