Reguläre Ausdrücke - Tutorial Teil 3: Metazeichen, Kombinationen und Beispiele

 

0 Kommentare | Kommentar schreiben | Bewerten | Artikel melden

 

Typ

Tutorial für Anfänger

Kategorie

Tools & Nützliches

Sprache

Deutsch

Autor

Stefan Trost Media

Eintrag

11.07.2011

Bewertungen

61

Views

3988
 
 


Über den Autor

Stefan Trost ist Entwickler von Software und Weblösungen. Gerne programmiert er auch individuelle Software oder Webauftritte für Sie. Kontakt

Profil von Stefan Trost Media
Artikel von Stefan Trost Media

In den bisherigen Tutorials zu regulären Ausrücken Teil 1 und Teil 2 haben wir schon viele Varianten regulärer Ausdrücke kennen gelernt. Wir wollen diese Kenntnisse hier anhand einiger Beispiele vertiefen und vedeutlichen. Zusätzlich schauen wir uns weitere Metazeichen an. Diese Teile sind bisher erschienen:

Teil 1: Einführung und Grundlagen | Teil 2: Einfache Zeichenketten, Wiederholungen und Gruppieren | Teil 3: Metazeichen | Teil 4: Zeichenauswahl und alternative Zeichen | Teil 5: Zeichengruppen und Klassen | Teil 6: Wiederverwendung und Rückwärtsreferenzen | Teil 7: Modifikatoren | Teil 8: Anwendung und Beispiele

Wichtiger Hinweis

Um die Beispiele auszuprobieren und selber reguläre Ausdrücke zu testen, können Sie die Software Text Konverter in der Basic Version benutzen.  Im ersten Teil des Tutorials ist erklärt, wie Sie das machen.

Metazeichen

Bislang haben wir uns die Metazeichen Punkt, Sternchen und runde sowie geschweifte Klammern angesehen. Der Punkt bedeutet, dass das voranstehende Zeichen mindestens einmal aber auch beliebig oft vorkommen kann. Das Sternchen bedeutet, dass das voranstehende Zeichen keinmal, einmal oder mehrfach vorkommen darf. Mit den Runden klammern kann man verschiedene Zeichen zusammen fassen und die geschweiften Klammern geben Auskunft darüber, wie oft ein Zeichen vorkommen darf.

Insgesamt gibt es in regulären Ausdrücken aber 11 Metazeichen und zwar [ ] ( ) { } | ? + - * ^ $ . und \. Alle anderen Zeichen wie Buchstaben Zahlen, aber auch / oder ' können einfach in den regulären Ausdrücken verwendet werden und haben dann die Bedeutung des Zeichens selber, wenn Sie zum Beispiel bestimmte Buchstaben ersetzen möchten, können Sie einfach diese Buchstaben direkt in einem regulären Ausdruck verwenden.

Metazeichen mit regulären Ausdrücken suchen

Beispiel 1

Suchen nach:   Ersetzen mit:    Original:        Nach Ersetzung:

.              X                abc. ab.cd       XXXXXXXXXX

\.             X                abc. ab.cd       abcX abXcd

1\+1           X                1+1 1\+1         X 1\+1

\\             X                abc\def          abcXdef

Wenn wir mit regulären Ausdrücken nach Zeichen suchen möchten, die innerhalb regulärer Ausdrücke Metazeichen sind, also eine besondere Bedeutung haben, müssen wir diese escapen. Das geht mit dem Metazeichen \. Sobald Sie \ vor ein Zeichen schreiben, wird dieses als Zeichen angesehen und nicht mehr als Metazeichen. Das verdeutlicht das Beispiel 1. Wir ersetzen zweimal den selben Originaltext durch ein "X" und einmal suchen wir nach "." und einmal nach "\.". In der ersten Zeile wird der Punkt als Metazeichen interpretiert und steht für ein beliebiges Zeichen. In der zweiten Zeile wird der Punkt escaped und tatsächlich werden dieses Mal nur die Punkte ersetzt.

Da auch das Plus + zu den Metazeichen gehört, muss auch dieses escpaed werden. Ein Beispiel zeigt die dritte Zeile. Nur "1+1" wird ersetzt, nicht aber "1\+1". Wenn wir \ selbst ersetzen möchten, müssen wir dieses Zeichen auch escapen. Wir escapen also \ mit \. Die letzte Zeile zeigt ein Beispiel dafür.

Optionale Zeichen

Beispiel 2

Suchen nach:   Ersetzen mit:    Original:        Nach Ersetzung:

ab?            X                abcdacd af ab    XcdXcd Xf X

Das Metazeichen ? steht für ein optionales Zeichen. Das heißt, das vorranstehende Zeichen kann vorkommen, muss aber nicht vorkommen. Der reguläre Ausdruck in Beispiel 2 bedeutet daher: Zuerst muss ein "a" kommen und anschließend kann ein "b" folgen, muss es aber nicht. Daher werden in dem Beispiel alle "ab" und alle "a" alleine gefunden und durch das "X" ersetzt.

Beginn und Ende einer Zeichenkette

Beispiel 3

      Suchen nach:   Ersetzen mit:    Original:        Ersetzt:

3.1   ^ab$           X                abc def          abc def

3.2   ^ab$           X                ab               X

3.3   ^abc def$      X                abc def          X

3.4   ^ab            X                abc def          Xcd ef

3.5   ^ab            X                ab               X

3.6   ab$            X                ab               X

3.7   ab$            X                abc def          abc def

3.8   ef$            X                abc def          abc dX

Die Zeichen ^ und $ stehen für den Beginn und das Ende einer Zeichenkette. Das demonstrieren die Ersetzungen in Beispiel 3. In 3.1 und 3.2 suchen wir nach ^ab$, also nach einer Zeichenkette die mit "ab" beginnt und mit "ab" aufhört. In 3.1 stimmt zwar der Beginn, aber das Ende stimmt nur in 3.2. Deswegen wird in 3.1 keine Ersetzung durchgeführt.

In 3.3 suchen wir nach den gesamten Zeichen aus Beispiel 3.1, schon funktioniert es und alle Zeichen werden ersetzt. In 3.4 und 3.5 suchen wir nach einer Zeichenkette, die mit "ab" beginnt. Das Ende ist uns hier egal. Demnach wird auch einmal nur der Beginn und einmal der gesamte Text ersetzt. Um das Ende kümmern wir uns in den Beispielen 3.6, 3.7 und 3.8. In 3.6 entspricht die ganze Zeichenkette dem Suchmuster, alles wird ersetzt. In 3.7 endet das Original nicht mit "ab", daher passiert nichts. In 3.8 dagegen suchen wir nach "ef" und das kommt tatsächlich im Original am Ende vor, also wird eine Ersetzung durchgeführt.

Wenn Sie dieses Beispiel im Text Konverter nachvollziehen möchten, müssen Sie aufpassen, da Anfang und Ende einer Zeichenkette auch gleichbedeutend mit dem Anfang und dem Ende einer Datei sein kann. Später in diesem Tutorial kommen wir auch noch auf die Möglichkeit jede Zeile einzeln als Zeichenkette zu betrachten.

Ein Beispiel

Wir haben uns bis jetzt schon vieles zu regulären Ausrücken angesehen. Zeit also für eine kleine Pause und einen Blick auf die Anwendung dessen, was wir bis jetzt gehört haben. Im Beispiel 4 sehen Sie einige Kombinationen der bisherigen Regeln.

Beispiel 4

      Suchen nach:   Ersetzen mit:   Original:        Ersetzt:

3.1   .ab            X               ab caab .ab      ab cX X

3.2   \.ab           X               ab caab .ab      ab caab X

Das Beispiel in 3.1 sucht nach einer Kombination von 3 Buchstaben. Der erste Buchstabe ist dabei egal, während die letzten beiden Buchstaben "a" und "b" sein müssen. Ersetzt wird daher nicht das erste "ab", weil hier das erste Zeichen fehlt, dafür aber "aab" und ".ab". Der Punkt in "Suchen nach" ist ein Metazeichen, dass für alle Zeichen steht. Also auch für den Punkt in ".ab". In 3.2 wurde der Punkt escaped. Nun ist der Punkt kein Metazeichen mehr und nur noch ".ab" wir ersetzt.

Zusammenfassung

  • Reguläre Ausdrücke kennen insgesamt die 11 Metazeichen [ ] ( ) { } | ? + - * ^ $ . und \. Diese haben eine besondere Bedeutung innerhalb regulärer Ausdrücke.
  • Wenn Sie Metazeichen nicht als Metazeichen verwenden sollen, müssen Sie ein \ vorranstellen. Der Punkt alleine steht für alle Zeichen, \. dagegen steht nur für einen Punkt.
  • Optionale Zeichen lassen sich mit einem Fragezeichen ? bestimmen.
  • Wenn Zeichen am Anfang oder am Ende einer Zeichenkette stehen sollen, können Sie die Zeichen ^ und $ verwenden.

Lesen Sie weiter

 

© Stefan Trost - Die Verwendung dieses Tutorials, auch in Auszügen, ist nur nach vorheriger Genehmigung von Stefan Trost erlaubt. Sie können das Tutorial aber gerne verlinken.

 
  
 

Kommentare

Sind Sie der selben Meinung wie der Autor oder wollen Sie etwas ergänzen? Hier können Sie einen Kommentar hinterlassen.

Kommentar schreiben

Sie können zu diesem Artikel einen anonymen Kommentar hinterlassen. Möchten Sie unter Ihrem Namen schreiben, loggen Sie sich ein oder registrieren Sie sich.



Bisherige Kommentare

Zu diesem Artikel wurden bislang noch keine Kommentare abgegeben.