Die größten Fallen im Überblick:
Zeichen haben
andere Bedeutungen, wenn sie in
Buchstabenklassen stehen, die eine Menge von möglichen Zeichen angeben! So steht das Zeichen "^" normalerweise für den Anfang eines Strings, in einer Buchstabenklasse steht es aber für "nicht"! Wird ein Fragezeichen einem Teilausdruck nachgestellt, bedeutet es "optional", wird es einem Quantifikator nachgestellt, macht es aus einem gierigen Ausdruck einen nicht gierigen.
Beispiel:
/^[^abc]/
matcht auf alle Strings, die nicht mit a, b oder c anfangen
/\w+(\.)? \w+/
matcht auf zwei mit einem Leerzeichen getrennten Wörter, wobei nach dem ersten noch ein Punkt folgen kann
/und.+?und/
matcht auf den Teil zwischen dem ersten und dem zweiten Vorkommen von "und" - ohne das Fragezeichen wären es das erste und das letzte Vorkommen!
Zeichen, die innerhalb von regulären Ausdrücken eine besondere Bedeutung haben, müssen
"escaped" werden, wenn sie in ihrem ursprünglichen Sinn verwendet werden sollen! Dazu wird ein Backslash ("\") vorangestellt.
Beispiel:
/^...$/
matcht alle Strings, die aus 3 beliebigen Zeichen bestehen
/^\.\.\.$/
matcht auf den String "..."
Der Unterschied zwischen den
beiden Quantifikatoren "*" und "+" ist wichtig! Beim Stern kann es auch ein leerer String sein, der gematcht wird, beim Plus muss es mindestens ein Zeichen sein!
Die Metazeichen "^" und "&" matchen bekanntlich auf
Anfang und Ende des Strings. Ob und wie man sie einsetzt, hängt zunächst einmal davon ab, ob man mit einem längeren Text arbeitet, der aus mehreren Wörtern besteht oder mit einem String, der schon genau ein Wort enthält (zum Beispiel aus einer Liste, die mit split erzeugt wurde). Liest man Zeilen aus einer Datei ein, kann es zum Beispiel erwünscht sein, Strings am Anfang der Zeile zu finden. Bei einzelnen Wörtern dagegen braucht man diese Metazeichen, wenn nicht erwünscht ist, dass nur ein Teilstring des Wortes gematcht wird.
Beispiel:
/ung$/
matcht nur auf Wörter mit "ung" am Ende, wie "Zeitung" und "Kleidung"
/ung/
matcht auf "Zeitung" und "Kleidung", aber z.B. auch auf "hungrig"!