|
|
Reguläre Ausdrücke
Für den Suchbegriff kann in vielen UNIX-Programmen wie
Zunächst werden einfache Platzhalter verwendet. Bei den Dateimasken
der Shell, den so genannten Wildcards, gibt es solche Platzhalter auch.
Die regulären Ausdrücke haben allerdings nichts mit den Wildcards zu tun,
die die Shell verwendet. Dort hat der Stern beispielsweise eine andere
Bedeutung als hier. Das einfachste Sonderzeichen ist der Punkt. Er steht
stellvertretend für genau ein beliebiges Zeichen. Die Suche nach
Der Stern und das Pluszeichen sind Multiplikatoren und beziehen sich immer
auf das Zeichen links neben sich. Das Pluszeichen besagt, dass das Zeichen
einmal oder mehrfach auftreten kann. Beim Stern ist es auch denkbar, dass
das Zeichen gar nicht erscheint. Die Suche nach
Hier werden Sie vielleicht stutzen, denn
Meeresfrüchte enden doch gar nicht auf s. Das ist richtig, aber im regulären
Ausdruck wurde ja auch gar nicht erwähnt, dass das Wort hinter s enden soll.
Das müsste man explizit mit einem > angeben. Das Gegenstück lautet
< und bedeutet Wortanfang. So wie nach dem Wortanfang und -ende gesucht
werden kann, so gibt es auch das ^ für den Zeilenanfang und das $ für das
Zeilenende. Eine wichtige Anwendung ist, die Verzeichnisse anzeigen
zu lassen. Unter UNIX unterscheidet man Dateien von Verzeichnissen an dem
kleinen d am Zeilenanfang, wenn man
gaston> ls -l | grep ^d drwxr-xr-x 3 arnold users 4096 Jun 25 20:57 pic drwxr-xr-x 2 arnold users 4096 Jun 28 20:55 unprog gaston>
[Reguläre Ausdrücke (regular expressions)]C|L
Ausdruck & Bedeutung
Vielfältige Möglichkeiten gewinnt man im
section{Dies ist ein spannendes Kapitel} <H1>Dies ist ein spannendes Kapitel</H1> Um alle Vorkommen von section in die entsprechenden <H1> umzuwandeln, wird ein regulärer Ausdruck verwendet. Zunächst wird das Muster beschrieben, das eine section erkennt.
section{.*} Der doppelte Backslash muss sein, damit er nicht als Kommando missinterpretiert wird. In den geschweiften Klammern steht schlicht Punkt Stern, also der Ausdruck für eine beliebige Zeichenfolge. Das ist unsere Überschrift, die wir gern übernehmen wollen. Also wird davor und dahinter eine Markierung gesetzt.
section{(.*)}
Nun wird das Ganze in den Ersetzungsbefehl von
:1,$ s/section{(.*)}/<H1>1</H1>/g
Der letzte Backslash der Zeile muss sein, sonst glaubt Machen Sie sich klar, dass Sie sich mit diesem zugegeben etwas kryptischen Befehl vielleicht stundenlange Arbeit ersparen, wenn Sie in einem langen Dokument die Überschriften austauschen müssen. Und überlegen Sie sich auch, ob Sie so etwas mit einem normalen Editor ohne reguläre Ausdrücke auch könnten. Der Grund, dass so viele Programme mit regulären Ausdrücken umgehen können, ist, dass UNIX dem Programmierer die Suche nach regulären Ausdrücken aus einer Bibliothek anbietet (siehe S. prgregexp).
|
|
Copyright © Rheinwerk Verlag GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das Openbook denselben Bestimmungen wie die gebundene Ausgabe:
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie
Einspeicherung und Verarbeitung in elektronischen Systemen.
Nutzungsbestimmungen | Datenschutz | Impressum
Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de
Cookie-Einstellungen ändern