Das Prinzip der RE dürfte von den Mustern (engl: Patterns) her
bekannt sein. Ihnen ist eigentlich jeder schon mal begegnet.
Einfaches Beispiel:
echo *
listet alle Dateien und Verzeichnisse des aktuellen
Verzeichnisses auf.
Das Sternchen ist also ein Platzhalter für
alle Dateien und Verzeichnisse des aktuellen Verzeichnisses,
deren Name eine beliebige Zeichenkette ist
(also quasi alle Dateien).
Ein a* bezöge sich auf alle Dateinamen,
die mit einem kleinen a beginnen.
Mit nur einem Muster kann man also eine Reihe von Dateinamen
(bei Verwendung in Programmen auch Textstellen etc.) abdecken,
ohne diese einzeln auflisten zu müssen.
Die passenden Dateinamen werden aus allen insgesamt
vorhandenen Dateinamen nach einer Regel (z.B. sie beginnen mit a)
heraus gefiltert.
Reguläre Ausdrücke verfolgen wie gesagt das gleiche
Grundprinzip, sind jedoch wesentlich flexibler und mächtiger als
Muster.
In der Praxis muss man sie jedoch gedanklich vollkommen von den Mustern
trennen.
Zum einen müssen reguläre Ausdrücke nicht auf das ganze Wort bzw.
die ganze Zeile passen, es reicht wenn eine passende Zeichenkette
darin enthalten ist. Wie man dieses Verhalten umgehen kann
wird natürlich auch noch erklärt.
Zum anderen weisen reguläre Ausdrücke und Muster einige
beachtliche Unterschiede bezüglich der Syntax auf.
Sie sind also wie zwei verschiedene Sprachen zu behandeln.
Viele Zeichen finden in beiden Sprachsystematiken Verwendung, allerdings mit
unterschiedlichen Bedeutungen.
Man muss also ein wenig aufpassen, um sie nicht zu
verwechseln.
Damit die Shell diese nicht verwechselt, sollte man ihr bei
regulären Ausdrücken sagen, dass sie diese nicht (als Muster)
interpretieren, sondern unverändert an das Programm übergeben
soll (das dann nach Möglichkeit RE beherrscht).
Dazu maskiert man sie durch Einschließen in
Hochkommata (
SHIFT+#).
|