Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 4 Nächste Version anzeigen »

Dieses Manual vermittelt grundlegende Kenntnisse im Umgang mit regulären Ausdrücken

Den Einstieg soll hier ein Beispiel leisten, das dem fortgeschritteneren Gebrauch zuzuordnen ist und die Leser des Manuals sicherlich daran zweifeln lässt, jemals mit regulären Ausdrücken umgehen zu können. Doch es gibt auch gute Nachrichten: Erstens muss der Ausdruck zu diesem Moment noch lange nicht verstanden werden, zweitens wird es in diesem Manual nicht mehr viel komplizierter. Und so kann ein regulärer Ausdruck

[A-Za-z]{4} [A-Za-z]*( [A-Za-z]{4}){2}\.

Eingestiegen werden soll mit einem abschreckenden Beispiel für reguläre Ausdrücke, denn danach kann es nur besser werden.

Reguläre Ausdrücke mögen zunächst abschrecken, doch das Einarbeiten lohnt sich, zumal sie nicht nur ein systematisches sondern bald auch ein zeitsparendes Durchsuchen von Textdaten erlauben.  

Sie erweisen sich als überaus nützlich, will man ein abstraktes Muster im Text finden, ohne zu wissen, wie dieses durch Zeichen und Zeichenketten besetzt wird. Mit anderen Worten: Reguläre Ausdrücke werden herangezogen, wenn man eine Vorstellung davon hat, was es in vorliegenden Daten zu finden gilt, ohne zu wissen, wie das Gesuchte im Detail auszusehen hat. Doch wie hat man sich so etwas vorstellen? Wie lassen sich Zeichen und Zeichenfolgen umschreiben? Welche Kriterien können herangezogen werden, um Zeichen und abstrakte Muster zu beschreiben? Und wie lassen sich sich aus konkreten Textdaten überhaupt Muster abstrahieren? Wie lassen sie sich mithilfe regulärer Ausdrücke formalisieren?

Genug verwirrt, klammern wir die regulären Ausdrücke zunächst aus. Bevor ihr Einsatz näher erläutert werden kann, folgt nun eine kleine Übung, die verdeutlichen soll, inwiefern Textdaten Variablen und abstrakte Muster zugrunde liegen: Welche formalen Eigenschaften haben Datensatz A und Datensatz B in Abgrenzung zu Datensatz C gemeinsam?

 Datensatz ADatensatz BDatensatz C
1)GA1
2)ABa
3)aubavbcud
4)abc 1abd 1efc1
5)Der Hund schläft im Haus.Niemand war im Haus.Im Haus war niemand.
6)ABC DEF GHI.JKL MNO GH1.TUV WXY IGH.
7)Alle Auen sind grün.Auch Autobahnen sind grau.Mein Hund kann mehr.

Die Gemeinsamkeiten in 1 und 2 sind schnell erklärt. Während es sich in 1) bei Datensatz A (G) und Datensatz B (A) um Buchstaben handelt, besteht Datensatz C aus einer Ziffer (1).
Im zweiten Beispiel liegt der Unterschied zwischen den Datensätzen A (A) und B (B) auf der einen und C (a) auf der anderen Seite in der Groß- und Kleinschreibung der Buchstaben.
Ein wenig komplizierter wird es in den Beispielen 3) und 4). Hier spielt neben dem Zeichentypus auch die Abfolge der Zeichen ebenfalls eine Rolle. Die Datensätze A und B im dritten Beispiel zeichnen sich in Abgrenzung zu C dadurch aus, dass beide dreistellig sind, mit einem a beginnen und mit einem b enden (natürlich handelt es sich auch um Buchstaben, Kleinbuchstaben, aber darin unterscheiden sie sich nicht von C). Das mittlere Zeichen unterscheidet sich in A und B, ist also für das gemeinsame Muster egal. Umschreiben ließen sich die Folgen folglich durch "a egal b".
Beispiel 4) zeigt zudem, dass auch Leerstellen von Bedeutung sind. Das Muster, das ausschließlich den Datensätzen A und B gemeinsam ist, besteht hier nicht nur aus der Folge "a b egal", sondern lässt sich auf "a b egal Leerstelle 1" erweitern.
In Beispiel 5) drängt sich das gemeinsame im Haus auf. Dies erscheint zwar auch in Datensatz C, tritt aber anders als in A und B nicht am Ende des Satzes auf. Hier spielt also die Position des Syntagmas im Haus eine Rolle.
Ähnliches lässt sich auch für Beispiel 6) sagen. Mit Ausnahme von G und H liegen keine gemeinsamen Buchstaben vor. Um die Datensätze A und B von C abgrenzen zu können, muss auch die Position von GH beachtet werden. Während auf die Buchstabenkombination in A und B ein beliebiges Zeichen und schließlich ein Punkt folgt, ist der Punkt in Datensatz C direkt hinter GH platziert. Folglich könnte eine Umschreibung der entscheidenden Sequenz in A und B "G H egal Punkt" lauten.
Die Datensätze des siebten Beispiels lassen möglicherweise mehrere Lösungen zu und es dient lediglich dazu, den Blick für abstrakte Muster im Text zu schärfen. Alle drei Datensätze bestehen aus einem durch einen Punkt beendeten Satz, der sich aus vier Wörtern zusammensetzt, welche mit Ausnahme von Autobahnen stets aus vier Buchstaben bestehen. Bezüglich der Gemeinsamkeiten von Datensatz A und B in Abgrenzung zu C ließe sich anführen, dass die ersten beiden Wörter in beiden Fällen mit einem A beginnen, das dritte Wort sind ist und das vierte Wort mit gr beginnt. Anders gesagt: "A egal egal egal Leerstelle A unbestimmt oft egal Leerstelle sind gr egal egal Punkt".

Will man ein Muster entwickeln, das auf alle drei Datensätze in Beispiel 7) passt, kann man dazu folgende Beschreibung heranziehen: Der Satz besteht aus vier Wörtern, von denen sich das erste, das dritte und das vierte aus je vier Buchstaben zusammensetzen. Das zweite ist beliebig lang. Um nun den Bogen zum Anfang zu spannen: Genau das sagt das Anfangsbeispiel [A-Za-z]{4} [A-Za-z]*( [A-Za-z]{4}){2}\. aus.

 

1Definition

Standard

Regular Expressions

Regex

Beschreiben von Zeichenketten anhand einer speziellen Syntax

Definition von Mustern

 

2. Einfache Regex: Platzhalter, Positionen

Problemstellung, Bsp

Platzhalter etc.

Was sind Metazeichen, was nicht? Was, wenn Zeichen beschrieben werden sollen, die gleichzeitig Metazeichen sind?

Im Internet lässt sich eine Reihe an Seiten finden, auf denen reguläre Ausdrücke ausprobiert werden können.

http://www.regexr.com/

https://regex101.com/

  • Keine Stichwörter