expressions(5) expressions(5)
NAME
expressions - Reguläre Ausdrücke
BESCHREIBUNG
Reguläre Ausdrücke werden verwendet, um in einem Text nach Stellen zu
suchen. Ein regulärer Ausdruck steht für eine Menge von Zeichen bzw.
Zeichenketten. Von jeder Zeichenkette in dieser Menge sagt man, daß
sie zu dem regulären Ausdruck paßt. Ein oder mehrere reguläre Aus-
drücke bilden ein Muster.
Ein regulärer Ausdruck besteht aus einer Folge von Zeichen. Bei diesen
Zeichen unterscheidet man
- einfache Zeichen
Einfache Zeichen sind alle Zeichen im Zeichensatz außer dem Neue-
Zeile-Zeichen und den Sonderzeichen. Einfache Zeichen in einem
Muster stehen für sich selbst, z. B. passen zu dem Muster abc nur
diejenigen Zeichenketten, in denen die Folge abc an irgendeiner
Stelle enthalten ist.
- Sonderzeichen
Sonderzeichen stehen nicht für sich selbst, sondern haben eine
besondere Bedeutung. Diese ist unten erläutert. Durch einen voran-
gestellten Schrägstrich \ verlieren Sonderzeichen ihre Sonderbedeu-
tung.
Es gibt zwei Arten regulärer Ausdrücke
⊕ einfache reguläre Ausdrücke
⊕ erweiterte reguläre Ausdrücke
Wie die verschiedenen Arten regulärer Ausdrücke gebildet werden, wird
in den folgenden Abschnitten beschrieben.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
EINFACHE REGULÄRE AUSDRÜCKE
Das Muster, nach dem in einem Text gesucht werden soll, kann sich aus
beliebigen Einzelausdrücken zusammensetzen. Folgende Einzelausdrücke
können Sie verwenden, wenn ein Kommando einfache reguläre Ausdrücke
unterstützt.
Einzelzeichen, Zeicheneinheiten
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| c | Das Zeichen c, wobei c kein Sonderzeichen sein |
| | darf. |
| | |
| | Beispiel: a paßt zu a |
|_______________|_____________________________________________________|
| \c | Das Zeichen c, wobei c jedes Zeichen sein darf |
| | außer ( ) { } 1 2 3 4 5 6 7 8 9. |
| | |
| | Sinnvoll ist ein regulärer Ausdruck der Form \c, |
| | wenn c ein Sonderzeichen ist. \c steht dann für das|
| | Zeichen c. |
| | |
| | Beispiel: \a paßt zu a, \* zu * |
|_______________|_____________________________________________________|
| [.cc.] | (Zeicheneinheits-Symbol; nur innerhalb von [ ]) |
| | Zeicheneinheiten, die aus mehreren Zeichen beste- |
| | hen, müssen in dieser Form dargestellt werden, um |
| | sie von einfachen Zeichen zu unterscheiden. Beim |
| | Sortieren wird ein solcher Ausdruck als ein einzi- |
| | ges Zeichen betrachtet. cc muß in der internationa-|
| | len Umgebung als zulässige Zeicheneinheit definiert|
| | sein. |
| | |
| | Beispiel: |
| | |
| | In der spanischen Umgebung |
| | LANG=LCCOLLATE=EsSP.88591 ist ch eine zulässige |
| | Zeicheneinheit: ch ist im Spanischen ein eigener |
| | Buchstabe und wird zwischen c und d sortiert. Die- |
| | ser Buchstabe muß in der Form [.ch.] dargestellt |
| | werden, um ihn von der zweibuchstabigen Zeichen- |
| | kette ch zu unterscheiden. |
|_______________|_____________________________________________________|
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Gruppen von Zeichen, Klassen
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| . | Ein beliebiges Zeichen. |
| | |
| | Beispiel: . paßt zu a, x, *, ... |
|_______________|_____________________________________________________|
| [s] | Eines der Zeichen, die in der Zeichenkette s ent- |
| | halten sind. s kann auch eine Zeichenklasse sein. |
| | |
| | Beispiel: [mz] paßt zu m, z |
| | |
| | Achtung: |
| | |
| | Sonderzeichen, die in Klammerausdrücken eine spe- |
| | zielle Bedeutung haben (], -, ^), werden als nor- |
| | male Zeichen behandelt, wenn sie im Klammerausdruck|
| | an einer bestimmten Stelle stehen, d. h. |
| | |
| | ] an erster Stelle |
| | |
| | - an erster oder an letzter Stelle |
| | |
| | ^ an beliebiger Stelle außer an erster. |
| | |
| [c1-c2] | Ein Zeichen aus dem Bereich von c1 bis c2, gemäß |
| | der aktuell gültigen Sortierreihenfolge (Grenzen c1|
| | und c2 eingeschlossen). c1 und c2 können auch Aus- |
| | drücke für Äquivalenzklassen [=c=] oder Zeichenein-|
| | heits-Symbole [.cc.] sein. |
| | |
| | Beispiel: |
| | |
| | [a-d] paßt in der deutschen Umgebung |
| | LANG=LCCOLLATE=DeDE.88591 zu den Zeichen a, ä, b,|
| | c, d, in der spanischen Umgebung |
| | LANG=LCCOLLATE=EsSP.88591 zu den Zeichen a, b, c,|
| | ch, d. |
| | |
| [s1c1-c2s2] | Eine Kombination der beiden Formen ist möglich. |
|_______________|_____________________________________________________|
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
______________________________________________________________________
| [^s] | Eines der Zeichen, die nicht in der Zeichenkette s |
| | enthalten sind. |
| | |
| | Beispiel: |
| | |
| | [^xyz] paßt zu jedem Zeichen außer x, y, z. |
| | |
| [^c1-c2] | Ein beliebiges Zeichen, das nicht im Bereich von c1|
| | bis c2 liegt. |
| | |
| | Beispiel: |
| | |
| | [^0-9] paßt zu jedem Zeichen außer 0, 9 und den |
| | Zeichen, die in der Sortierreihenfolge zwischen 0 |
| | und 9 stehen. |
| | |
| [^s1c1-c2s2] | Eine Kombination der beiden Formen ist möglich. |
|_______________|_____________________________________________________|
| [:klasse:] | (Ausdruck für Zeichenklasse; nur innerhalb von [ ])|
| | Ein Zeichen der Zeichenklasse klasse. klasse kann |
| | sein: |
| | |
| | alpha alle Buchstaben |
| | |
| | upper alle Großbuchstaben |
| | |
| | lower alle Kleinbuchstaben |
| | |
| | digit alle Dezimalziffern (0 bis 9) |
| | |
| | xdigit alle Hexadezimalziffern (0 bis 9, a bis f|
| | und A bis F) |
| | |
| | alnum alle alphanumerischen Zeichen |
| | (Buchstaben und Ziffern) |
| | |
| | space alle Zeichen, die bei der Textdar- |
| | stellung Zwischenraum produzieren |
| | (z. B. Leer- oder Tabulatorzeichen) |
| | |
| | blank Leer- oder Tabulatorzeichen |
| | |
| | punct alle Trennzeichen |
| | |
| | print alle druckbaren Zeichen (einschließlich |
| | der Zeichen in space) |
| | |
| | graph alle sichtbaren druckbaren Zeichen |
| | (ohne die Zeichen in space) |
|_______________|_____________________________________________________|
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
| | cntrl alle Steuerzeichen |
| | |
| | Beispiel: |
| | |
| | In der deutschen Umgebung LANG=LCCTYPE=DeDE.88591|
| | passen zum regulären Ausdruck [[:lower:]] die Zei- |
| | chen ä, ö, ü, ß, a, ..., z. Das Zeichen è gehört |
| | weder zur Klasse lower noch zur Klasse alpha, son- |
| | dern ist nur ein druckbares Zeichen. |
|_______________|_____________________________________________________|
| [=c=] | (Ausdruck für Äquivalenzklasse; nur innerhalb von |
| | [ ]) Ein Zeichen bzw. eine Zeicheneinheit, die in |
| | der Sortierreihenfolge die gleiche relative Ordnung|
| | wie c hat. Für c dürfen Sie kein Gleichheitszeichen|
| | = und keine schließende eckige Klammer ] angeben. |
| | |
| | Beispiel: |
| | |
| | In der deutschen Umgebung |
| | LANG=LCCOLLATE=DeDE.88591 bilden die Zeichen u |
| | und ü eine Äquivalenzklasse. Folglich passen zum |
| | regulären Ausdruck [[=u=]] die Zeichen u und ü. Die|
| | regulären Ausdrücke [[=u=]v], [[=ü=]v] und [uüv] |
| | sind in dieser Umgebung gleichbedeutend. |
|_______________|_____________________________________________________|
Verkettung
Einzelne Ausdrücke können beliebig aneinandergehängt werden. Alle
aneinandergehängten Ausdrücke beschreiben zusammen das Muster, nach
dem in einem Text gesucht werden soll.
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| rx | Aufeinanderfolge einer zum regulären Ausdruck r |
| | passenden Zeichenkette und einer zum regulären Aus-|
| | druck x passenden Zeichenkette. |
| | |
| | Beispiel: [ab]. paßt zu ax, a3, a*, bz, ... |
|_______________|_____________________________________________________|
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Wiederholungen
Ausdrücke, die einzelne Zeichen oder Gruppen von Zeichen beschreiben,
können wiederholt werden, ebenso Rückverweise auf Unterausdrücke.
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| r* | Null-, ein- oder mehrmals der reguläre Ausdruck r. |
| | |
| | Beispiel: a* paßt zu nichts, a, aa, aaa, ... |
|_______________|_____________________________________________________|
| r\{m,n\} | Mindestens m- und höchstens n-mal der reguläre Aus-|
| | druck r. |
| | |
| | Beispiel: a\{1,2\} paßt zu a oder aa |
| | |
| r\{m\} | Genau m-mal der reguläre Ausdruck r. |
| | |
| | Beispiel: a\{3\} paßt zu aaa |
| | |
| r\{m,\} | Mindestens m-mal der reguläre Ausdruck r. |
| | |
| | Beispiel: a\{3,\} paßt zu aaa, aaaa, aaaaa, ... |
|_______________|_____________________________________________________|
Verankerung
Muster können am Zeilenanfang oder Zeilenende "verankert" werden.
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| ^r | Eine zum regulären Ausdruck r passende Zeichenkette|
| | am Zeilenanfang, d. h. direkt nach einem Neue- |
| | Zeile-Zeichen oder am Dateianfang. |
| | |
| | Beispiel: |
| | |
| | ^[aA]pfel paßt zu apfel oder Apfel am Zeilenanfang.|
|_______________|_____________________________________________________|
| r$ | Eine zum regulären Ausdruck r passende Zeichenkette|
| | am Zeilenende, d. h. direkt vor einem Neue-Zeile- |
| | Zeichen. |
| | |
| | Beispiel: |
| | |
| | [bB]irne$ paßt zu birne oder Birne am Zeilenende. |
|_______________|_____________________________________________________|
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Unterausdrücke und Rückverweise
Teile eines Musters können als Unterausdruck zusammengefaßt werden.
Mittels Rückverweis kann dieser Unterausdruck an späterer Stelle im
Muster wiederholt werden. Der Rückverweis steht immer für dieselbe
Zeichenkette wie der Unterausdruck.
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| \(x\) | Der reguläre Ausdruck x wird als Unterausdruck |
| | gekennzeichnet. Es passen alle Zeichenketten, die |
| | zum regulären Ausdruck x passen. |
| | |
| | Beispiel: \(aa*\) paßt zu a, aa, aaa, ... |
|_______________|_____________________________________________________|
| \n | n ist eine ganze Zahl von 1 bis 9. \n ist ein Rück-|
| | verweis auf den n-ten Unterausdruck x in einem |
| | Muster. x muß im Muster vor dem Rückverweis stehen.|
| | \n paßt auf dieselbe Zeichenkette wie x. |
| | |
| | Beispiel: |
| | |
| | \(aa*\)\1 paßt zu aa, aaaa, aaaaaa, ... |
| | |
| | \(a\(b\)\)\2 paßt zu abb |
|_______________|_____________________________________________________|
Gruppierung, Alternativen
Existieren nur bei erweiterten regulären Ausdrücken.
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
ERWEITERTE REGULÄRE AUSDRÜCKE
Das Muster, nach dem in einem Text gesucht werden soll, kann sich aus
beliebigen Einzelausdrücken zusammensetzen. Folgende Einzelausdrücke
können Sie verwenden, wenn ein Kommando erweiterte reguläre Ausdrücke
unterstützt.
Einzelzeichen, Zeicheneinheiten
Wie bei einfachen regulären Ausdrücken.
Gruppen von Zeichen, Klassen
Wie bei einfachen regulären Ausdrücken.
Verkettung
Wie bei einfachen regulären Ausdrücken.
Wiederholungen
Ausdrücke, die einzelne Zeichen oder Gruppen von Zeichen beschreiben,
können wiederholt werden, ebenso Gruppierungen und Alternativen.
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| r* | Null-, ein- oder mehrmals der reguläre Ausdruck r. |
| | |
| | Beispiel: a* paßt zu nichts, a, aa, aaa, ... |
| | |
| r+ | Ein- oder mehrmals der reguläre Ausdruck r. |
| | |
| | Beispiel: u+ paßt zu u, uu, uuu, ... |
| | |
| r? | Null- oder einmal der reguläre Ausdruck r. |
| | |
| | Beispiel: u? paßt zu nichts oder u |
|_______________|_____________________________________________________|
| r{m,n} | Mindestens m- und höchstens n-mal der reguläre Aus-|
| | druck r. |
| | |
| | Beispiel: a{1,2} paßt zu a oder aa |
| | |
| r{m} | Genau m-mal der reguläre Ausdruck r. |
| | |
| | Beispiel: a{3} paßt zu aaa |
| | |
| r{m,} | Mindestens m-mal der reguläre Ausdruck r. |
| | |
| | Beispiel: a{3,} paßt zu aaa, aaaa, aaaaa, ... |
|_______________|_____________________________________________________|
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Verankerung
Wie bei einfachen regulären Ausdrücken.
Unterausdrücke und Rückverweise
Existieren nur bei einfachen regulären Ausdrücken.
Gruppierung, Alternativen
______________________________________________________________________
| Ausdruck | Bedeutung |
|_______________|_____________________________________________________|
| (rx) | Die regulären Ausdrücke r und x werden zu einer |
| | Gruppe zusammengefaßt. Es passen alle Zeichenket- |
| | ten, die zum regulären Ausdruck rx passen. |
| | |
| | Beispiel: |
| | |
| | (ok(abc)) paßt zu okabc |
| | |
| | (au)* paßt zu nichts oder au, auau, ... |
|_______________|_____________________________________________________|
| (r1|r2) | Zeichenketten, die zu dem regulären Ausdruck r1 |
| | oder zu dem regulären Ausdruck r2 passen. |
| | |
| | Beispiel: (ok|ko) paßt zu ok oder ko |
|_______________|_____________________________________________________|
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
PRIORITÄT
Die folgenden Tabellen zeigen die Priorität der Operatoren in regulä-
ren Ausdrücken. Die Operatoren sind von höchster Priorität zu niedrig-
ster Priorität sortiert.
Priorität für einfache reguläre Ausdrücke
________________________________________________________________
| Symbole aus der internationalen Umgebung | [= =] [: :] [. .] |
|__________________________________________|____________________|
| Zeichenentwertung | \zeichen |
|__________________________________________|____________________|
| Klammerausdrücke | [ ] |
|__________________________________________|____________________|
| Unterausdrücke, Rückverweise | \( \) \n |
|__________________________________________|____________________|
| Wiederholung | * \{m,n\} |
|__________________________________________|____________________|
| Verkettung | rx |
|__________________________________________|____________________|
| Verankerung | ^ $ |
|__________________________________________|____________________|
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Priorität für erweiterte reguläre Ausdrücke
________________________________________________________________
| Symbole aus der internationalen Umgebung | [= =] [: :] [. .] |
|__________________________________________|____________________|
| Zeichenentwertung | \zeichen |
|__________________________________________|____________________|
| Klammerausdrücke | [ ] |
|__________________________________________|____________________|
| Gruppierung | ( ) |
|__________________________________________|____________________|
| Wiederholung | * ? + {m,n} |
|__________________________________________|____________________|
| Verkettung | rx |
|__________________________________________|____________________|
| Verankerung | ^ $ |
|__________________________________________|____________________|
| Alternativen | | |
|__________________________________________|____________________|
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
Kommandos mit regulären Ausdrücken
Die folgende Tabelle gibt einen Überblick darüber, welche Kommandos
reguläre Ausdrücke verarbeiten.
______________________________________________
| Kommando | Art der regulären Ausdrücke |
|__________|__________________________________|
| apropos | erweiterte |
|__________|__________________________________|
| awk | erweiterte internationalisierte |
|__________|__________________________________|
| bfs | einfache |
|__________|__________________________________|
| csplit | einfache |
|__________|__________________________________|
| e | einfache |
|__________|__________________________________|
| ed | einfache |
|__________|__________________________________|
| egrep | erweiterte |
|__________|__________________________________|
| ex | einfache |
|__________|__________________________________|
| expr | einfache |
|__________|__________________________________|
| extract | einfache |
|__________|__________________________________|
| findman | erweiterte |
|__________|__________________________________|
| grep | einfache |
|__________|__________________________________|
| lex | erweiterte |
|__________|__________________________________|
| man | einfache |
|__________|__________________________________|
| nl | einfache |
|__________|__________________________________|
| pg | einfache |
|__________|__________________________________|
| sed | einfache |
|__________|__________________________________|
| vi | einfache |
|__________|__________________________________|
| whatis | erweiterte |
|__________|__________________________________|
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98
expressions(5) expressions(5)
INTERNATIONALE UMGEBUNG
In geklammerten regulären Ausdrücken bestimmt die Umgebungsvariable
LCCOLLATE die Bedeutung von Zeichenbereichen, Äquivalenzklassen und
Zeicheneinheiten, die Umgebungsvariable LCCTYPE die Bedeutung von
Zeichenklassen.
Wenn LCCOLLATE oder LCCTYPE nicht oder als leere Zeichenkette defi-
niert ist, wird der Wert von LANG als Standardwert für die jeweils
nicht gesetzte oder leere Variable herangezogen. Ist auch LANG nicht
oder als leere Zeichenkette definiert, verhält sich das System so, als
wäre es nicht internationalisiert.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
SIEHE AUCH
awk(1), bfs(1), csplit(1), e(1), ed(1), egrep(1), ex(1), expr(1),
extract(1), grep(1), lex(1), man(1), nl(1), pg(1), regcmp(1), sed(1),
vi(1), regex(3), regcomp(3C), regcmp(3G), regexpr(3G), regex(5),
regexp(5).
Seite 13 Reliant UNIX 5.44 Gedruckt 11/98