Login
Newsletter
Werbung

Di, 29. Juni 1999, 00:00

Perl/CGI-Workshop, Teil 8

Perl/CGI-Workshop, Teil 8.

Reguläre Ausdrücke

Nun werden wir das Geheimnis um diese rätselhaften "regulären Ausdrücke" lüften. Dabei handelt es sich um Suchmuster. Dank den Regexps können Sie zwar u.a. auch "Suchen-&-Ersetzen"-Aktionen durchführen, doch Regexps sind noch viel flexibler.

Im Übrigen sind Regexps nichts Perl-spezifisches sondern, können in vielen Unix-Programmen verwendet werden, z.B. im Texteditor "vi" oder auch der Sprache "awk". Es existiert auch eine entsprechende Bibliothek für C/C++, doch die ist alles andere als einfach zu handhaben.

Auch wenn Sie bisher noch nie von Regexps gehört haben, hatten Sie schonmal mit einer Abwandlung von diesen zu tun: Die Metazeichen der Shell (wie das "*" oder das "?"). Die Shell ersetzt das von Ihnen angegebene Suchmuster durch alle Dateinamen, die darauf passen. Auch in Regexps gibt es einige solcher Metazeichen, die eine besondere Bedeutung haben. Ohne diese Metazeichen sieht die Verwendung von Regexps so aus:

#!/usr/bin/perl
# regexp1.pl -- by W. Jährling
@tmp = <STDIN>;
$eingabe = "@tmp";
# (Nun ist die komplette Eingabe in $eingabe)
# Suchen:
# -------
if ($eingabe =~ /abcdef/) {
 print 'In $eingabe kommt die Zeichenfolge "abcdef" vor.\n';
}
if ((@#tmp > 20) and ($eingabe =~ /xyz/)) {
 print "In den mehr als 20 Zeilen der Eingabe taucht 'xyz' auf.\n";
}
if ($eingabe =~ /linux/i) { # Das Flag "i" bedeutet
 # "case-<strong>i</strong>nsensitive".
 # Groß-/Kleinschreibung wird
 # also ignoriert.
 print "In der Eingabe geht es wohl um LINUX!\n";
}
# Suchen & Ersetzen:
# ------------------
$eingabe =~ s/NT/Linux/; # "NT" durch "Linux" ersetzen ;)
 # "s" steht für "<strong>s</strong>ubstitute"
 # (="ersetzen").
$eingabe =~ s/Micro/Mafia/g; # Das Flag "g" steht für
 # "<strong>g</strong>lobal". Es werden *alle*
 # Vorkommen ersetzt.

Das obige Beispiel zeigt die allgemeine Verwendungsweise von Regexps. Die wichtigsten Dinge sind Ihnen nun bekannt. Im nächsten Kapitel werden wir uns die Metazeichen näher anschauen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung