Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Reguläre Ausdrücke der POSIX-Shell

&pagelevel(3)&pagelevel

Reguläre Ausdrücke werden verwendet, um in einem Text nach Stellen zu suchen, die zu einem vorgegebenen Muster passen. Ein regulärer Ausdruck steht für eine Menge von Zeichenketten. Von jeder Zeichenkette in dieser Menge sagt man, dass sie zu dem regulären Ausdruck passt. Ein oder mehrere reguläre Ausdrücke bilden ein Muster.

Ein regulärer Ausdruck besteht aus einer Folge von Zeichen. Bei diesen Zeichen unterscheidet man

  • einfache Zeichen und

  • Sonderzeichen.

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 stehen nicht für sich selbst, sondern haben eine besondere Bedeutung. Diese ist unten erläutert.

Man unterscheidet 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.

Die folgende Tabelle gibt einen Überblick darüber, welche Kommandos reguläre Ausdrücke verarbeiten:

Kommando

Art der regulären Ausdrücke

awkerweiterte
ed einfache
egreperweiterte
ex *)
expreinfache
grepeinfache
lexerweiterte
nl einfache
sed einfache
vi*)

*)  Die Kommandos ex und vi verarbeiten reguläre Ausdrücke, die von den einfachen regulären Ausdrücken in einigen Punkten abweichen. Dies ist bei ex und vi beschrieben.

Einfache reguläre Ausdrücke

Einfache reguläre Ausdrücke werden wie folgt gebildet:

Nr.

regulärer
Ausdruck

Bedeutung

Beispiel

passende
Zeichenketten

1

c

Das Zeichen c, wobei c kein
Sonderzeichen sein darf.

a

a

2

\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,
Sonderzeichen verlieren durch einen
vorangestellten Gegenschrägstrich ihre
Sonderbedeutung
(Entwertung von Sonderzeichen).

\a
\*

a
*

3

.

Ein beliebiges Zeichen.

.

a, x, *, ...

4

[s]














[c1-c2]

Eines der Zeichen, die in der Zeichenkette
s enthalten sind.

Wenn eines der Zeichen die schließende
eckige Klammer ] sein soll, muss diese an
erster Stelle stehen.

Wenn eines der Zeichen der
Bindestrich - sein soll, muss dieser an
erster oder an letzter Stelle stehen.

Wenn eines der Zeichen das Dach ^
sein soll, darf dieses an beliebiger Stelle
stehen außer an erster.

Ein beliebiges Zeichen aus dem
Bereich von c1 bis c2, gemäß der EBCDIC-
Sortierreihenfolge (Grenzen c1 und c2
eingeschlossen). c1 muss in der
EBCDIC-Sortierreihenfolge
vor c2 stehen.

Ist dies nicht der Fall, dann steht c1-c2
nicht für einen Bereich, sondern für die
beiden Zeichen c1 und c2.

Eine Kombination der beiden Formen
ist möglich: [s1c1-c2s2]

[mz]


[]a]



[-a]
[a-]


[a^]



[a-m]






[m-a]



[ado-qxz]

m, z


], a



-, a
-, a


a, ^



a, m sowie jedes
Zeichen, das in
der
EBCDIC-Sortierreihenfolge
dazwischen steht


m, a



a, d, o, q, x, z
sowie jedes
Zeichen zwischen o
und q (EBCDIC)

5

[^s]


[^c1-c2]

Eines der Zeichen, die nicht in der
Zeichenkette s enthalten sind.

Ein beliebiges Zeichen, das nicht im
Bereich von c1 bis c2 liegt.
Das für [c1-c2]Gesagte gilt analog.



Eine Kombination der beiden Formen
ist möglich: [^s1c1-c2s2]

[^xyz]


[^0-9]





[^a0-9b]

jedes Zeichen
außer x, y, z

jedes Zeichen
außer 0, 9 und
allen Zeichen, die
zwischen 0 und 9
stehen (EBCDIC)

jedes Zeichen
außer a, b, 0, 9
und allen
Zeichen, die
zwischen 0 und 9
stehen (EBCDIC)

6

r*

Null-, ein- oder mehrmals der reguläre
Ausdruck r. r muss von der Form 1 - 5,
12, 15 oder 16 sein.

a*

nichts, a, aa, aaa, ...

7

r\{m,n\}



r\{m\}



r\{m,\}

Mindestens m- und höchstens n-mal der
reguläre Ausdruck r. r muss von der
Form 1-5, 12, 15 oder 16 sein.

Genau m-mal der reguläre Ausdruck r.
r muss von der Form 1-5, 12, 15 oder
16 sein.

Mindestens m-mal der reguläre
Ausdruck r. r muss von der Form 1-5, 12,
15 oder 16 sein.

a\{1,2\}



a\{3\}



a\{3,\}

a oder aa



aaa



aaa, aaaa, aaaaa, ...

8

rx

(Verkettung) Aufeinanderfolge einer
zum regulären Ausdruck r passenden
Zeichenkette und einer zum regulären
Ausdruck x passenden Zeichenkette.
r und x dürfen beliebige reguläre
Ausdrücke sein.

[ab].

ax, a3, a*, bz, ...

9

^r

Eine zum regulären Ausdruck r passende
Zeichenkette am Zeilenanfang, d.h.
direkt nach einem Neue-Zeile-Zeichen
oder am Dateianfang.
r darf ein beliebiger regulärer Ausdruck
sein, außer von der Form 9.

^[aA]pfel

apfel oder Apfel am
Zeilenanfang

10

r$

Eine zum regulären Ausdruck r passende
Zeichenkette am Zeilenende, d.h.
direkt vor einem Neue-Zeile-Zeichen.
r darf ein beliebiger regulärer Ausdruck
sein, außer von der Form 10.

[bB]irne$

birne oder Birne am
Zeilenende

11

\(r\)

Zeichenketten, die zum regulären
Ausdruck r passen. r darf ein beliebiger
regulärer Ausdruck sein.
Nur sinnvoll zusammen mit Nr. 12

\([aA]pfel\)

apfel, Apfel

12

\n

n ist eine ganze Zahl von 1 bis 9. Kommt
\n in einem zusammengesetzten
regulären Ausdruck vor, steht es für den
regulären Ausdruck x, wobei x der n-te in
\( und \) eingeschlossene reguläre
Ausdruck ist, der in dem zusammengesetzten
regulären Ausdruck vorkommt.

\(a\(b\)\)\2

\(hal\)li\1lo

\(ab\)x\1*

abb

hallihallo

abx,
abxab,
abxabab, ...

Priorität

Die folgende Tabelle zeigt die Priorität der Operatoren in regulären Ausdrücken.

Operator

Priorität

[. .] [= =] [: :]

höchste Priorität

\<zeichen>

.

[ ]

.

( )

.

* ? + \ {m,n\ }

.

Verkettung

.

^ $

.

|

niedrigste Priorität

Sonderzeichen

Sonderzeichen

Das linksstehende Zeichen ist ein Sonderzeichen, wenn ...

\

ihm kein Gegenschrägstrich \ vorangestellt ist.

.
[

ihm kein Gegenschrägstrich \ vorangestellt ist und
es nicht in eckigen Klammern [...] steht.

*

ihm kein Gegenschrägstrich \ vorangestellt ist,
es nicht in eckigen Klammern [...] steht,
es nicht das erste Zeichen eines Musters ist und
es nicht nach \ ) steht.

$

es das letzte Zeichen eines Musters ist.

^

es das erste Zeichen eines Musters ist oder
es das erste Zeichen in eckigen Klammern [...] ist.

-

es in eckigen Klammern steht, aber nicht an erster oder letzter Stelle.

Begrenzungszeichen
für reguläre
Ausdrücke,
wie z.B. /.../

ihm kein Gegenschrägstrich \ vorangestellt ist.

[.
[=
[:

Die linksstehenden Zeichenpaare sind Sonderzeichen, wenn sie innerhalb
einer Bracket Expression (also eines Ausdrucks in eckigen Klammern [ ]) vorkommen.
Sie müssen mit dem äquivalenten Zeichenpaar .], =] oder :] abgeschlossen
werden.
Beispiel: [[:upper:]] kennzeicnet alle Großbuchstaben.

Erweiterte reguläre Ausdrücke

Erweiterte reguläre Ausdrücke umfassen die einfachen regulären Ausdrücke mit folgender Ausnahme:

Die bei einfachen regulären Ausdrücken verwendete Konstruktion \(...\) hat bei erweiterten regulären Ausdrücken keine Sonderbedeutung, z.B. steht der erweiterte reguläre Ausdruck \(ab\) für die Zeichenkette (ab).

Darüberhinaus bieten erweiterte reguläre Ausdrücke die folgenden zusätzlichen Syntaxelemente zur Bildung von Mustern:

Nr.

regulärer
Ausdruck

Bedeutung

Beispiel

passende
Zeichenketten

7

r{m,n}



r{m}



r{m,}

Mindestens m- und höchstens n-mal
der reguläre Ausdruck r. r muss von
der Form 1-5, 12, 15 oder 16 sein.

Genau m-mal der reguläre Ausdruck r.
r muss von der Form 1-5, 12, 15 oder
16 sein.

Mindestens m-mal der reguläre
Ausdruck r. r muss von der Form 1-5, 12,
15 oder 16 sein.

a{1,2}



a{3}



a{3,}

a oder aa



aaa



aaa, aaaa,
aaaaa, ...

13

r+

Ein- oder mehrmals der reguläre
Ausdruck r. r muss von der Form 1-5, 15
oder 16 sein.

u+

u, uu,
uuu, ...

14

r?

Null- oder einmal der reguläre
Ausdruck r. r muss von der Form 1-5, 15
oder 16 sein.

u?

nichts oder u

15

(r)

Zeichenketten, die zu dem regulären
Ausdruck r passen. r kann ein beliebiger
regulärer Ausdruck sein.

(ok(abc))
(au)*

okabc
nichts oder
au, auau, ...

16

(r1/r2)

Zeichenketten, die zu dem regulären
Ausdruck r1 oder zu dem regulären
Ausdruck r2 passen.

(ok?ko)

ok oder ko

Priorität

Die folgende Tabelle zeigt die Priorität der Operatoren in erweiterten regulären Ausdrücken.

Operator

Priorität

[. .] [= =] [: :]

höchste Priorität

\<zeichen>

.

[ ]

.

( )

.

* ? + {m,n}

.

Verkettung

.

^ $

.

|

niedrigste Priorität

Beispiele

  1. Einfache reguläre Ausdrücke

    Muster

    Bedeutung

    passende Zeichenketten

    ab.d

    a - b - ein beliebiges Zeichen - d

    abcd, abXd, ab*d, ...

    ab.*d

    a - b - beliebige Zeichenkette (kann auch leer
    sein) - d

    abd, abxd, abX*Yd, ...

    ab[xyz]d

    a - b - entweder x oder y oder z - d

    abxd, abyd, abzd

    ab[^c]d

    a - b - beliebiges Zeichen ungleich c - d

    abbd, abXd, ab*d, ...

    ^abcd$

    eine Zeile, die nur die Zeichenkette abcd enthält


  2. Erweiterte reguläre Ausdsrücke

    Muster

    Bedeutung

    passende Zeichenketten

    ab.+d

    a - b - beliebige Zeichenkette aus einem oder
    mehreren Zeichen - d

    abjd, abX*Yd, ...

    abc?d

    a - b - c oder nichts - d

    abd, abcd

    (abc|xyz)

    abc oder xyz

    abc, xyz