Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) SO5 SO6 SO7 SO8 OOo1.1 OOo2
{X} OOo1.0

Mit dem Begriff Regulärer Ausdruck (engl. regular expression) bezeichnet man eine Familie von formalen Sprachen, mit denen sich (Unter-)Mengen von Zeichenketten beschreiben lassen.

1. Anwendungsbereich

Reguläre Ausdrücke benutzt man in OpenOffice.org z.B. beim SuchenUndErsetzen. Mit einem Regulären Ausdruck kann man dabei auch nach SteuerZeichen (wie z.B. einem Tabulator) suchen. In der Hauptsache geht es aber um Suchmuster, die nicht nur einen genau eingegebenen Begriff finden, wie z.B. "Haus", sondern auch "Hausaufgabe" oder "Hochhaus" (oder umgekeht: die "Haus" nur finden, wenn es als ein eigenständiges Wort vorkommt).

Auch in Filtern werden oft Reguläre Ausdrücke benötigt, um z.B. Datensätze herauszufiltern, bei denen im Kundennamen verschiedene - evtl. nicht exakt bekannte - Schreibweisen eines Namens gesucht werden.

Die Mächtigkeit dieses Werkzeuges erschließt sich erst mit der regelmäßigen Anwendung. Die Kombination von mehreren Ausdrücken zu umfangreichen Selektionsanweisungen wie z.B. nur nach Zeichenketten aus Buchstaben suchen - dabei Zahlen ignorieren - die am Absatzanfang stehen und aus einer bestimmten Kombination von Groß- und Kleinbuchstaben bestehen macht deutlich, dass es sich dabei nicht nur um ein paar Platzhalter-Symbole handelt, sondern dass ein formales Sprachkonzept zugrunde liegt. Und dass vor allem auch die Findigkeit des Anwenders gefragt ist, der in den Suchbedingungen dasjenige Muster erkennt, dass sich zu einem Regulären Ausdruck formulieren lässt.

Reguläre Ausdrücke sind in verschiedenen Programmiersprachen implementiert und werden in Umgebungen eingesetzt, wo es darum geht, aus einer vorhandenen Datenmenge eine Untermenge zu bilden, wobei die Auswahl dieser Daten nicht allein mit den üblichen Operatoren gebildet werden kann, sondern über ein Suchmuster identifiziert wird. Es werden also Inhalte gesucht, die mit einem vorgegebenen Suchmuster übereinstimmen. Man verwendet dafür auch häufig den Begriff match aus dem Englischen (für "Entsprechung", "Übereinstimmung"). Zum Beispiel "matcht" der Ausdruck Schmi.t sowohl auf Schmidt, als auch auf Schmitt (nicht jedoch auf Schmit).

Die Syntax dieser Implementationen ist aber nicht überall gleich. Es ist daher unumgänglich, sich mit der spezifischen Syntax vertraut zu machen.

2. Syntax

OpenOffice.org kennt folgende Reguläre Ausdrücke mit folgenden Bedeutungen:

Regulärer Ausdruck

Bedeutung (Match)

.

ein beliebiges Zeichen, außer Absatzwechsel (¶) oder Zeilenumbruch (↲)

^

Absatzanfang

$

Absatzende

*

das Zeichen vor * 0-, ein- oder mehrmals

+

das Zeichen vor + ein- oder mehrmals (nicht 0-mal)

?

das Zeichen vor ? 0- oder einmal (nicht mehrmals)

{3}

das Zeichen vor { 3-mal

{3,}

das Zeichen vor { 3-mal oder öfter

{1,2}

das Zeichen vor { mindestens 1-, höchstens 2-mal

\

hebt die Bedeutung von Meta-Zeichen auf, wenn es vor diese gesetzt wird, also z.B. \+ für ein wörtlich gemeintes Plus-Zeichen

\n

Zeilenwechsel (beim Suchen)

\t

Tabulator

\x20AC

das Zeichen mit dem Hexadezimalwert U+20AC (€)

\>

Wortende

\<

Wortanfang

[abc]

Menge der Zeichen a, b und c (case sensitive)

[a-c]

Menge der Zeichen von a bis c (case sensitive)

[^a]

Menge der Zeichen außer a (case sensitive)

a|b

a oder b

&

im Feld Ersetzen durch: die Zeichenkette, auf die Suchen nach zutraf

( )

zum Setzen einer Referenz

[:digit:]

Klasse der Ziffern

[:space:]

Klasse des white space

[:print:]

Klasse der Druckbaren Zeichen

[:cntrl:]

Klasse der Nicht-druckbaren Zeichen

[:alpha:]

Klasse der alphabetischen Zeichen (Buchstaben)

[:lower:]

Klasse der Kleinbuchstaben

[:upper:]

Klasse der Großbuchstaben

[:alnum:]

Klasse der alphanumerischen Zeichen (Buchstaben und Ziffern)

Einzelne Reguläre Ausdrücke können auch kombiniert werden, z.B.:

^$

ein leerer Absatz

^.

das erste Zeichen eines Absatzes

.*

beliebige Zeichen beliebig oft (auch 0 Zeichen)

[a-cx-z]

eines der Zeichen aus den Bereichen a bis c oder x bis z (case sensitive)

\<[:upper:]{1}[:lower:]+[:upper:]{1}[:lower:]+

ein Wort, das mit genau einem Großbuchstaben beginnt und genau einen Binnenmajuskel, aber keine Ziffern enthält (WikiName)

Ausdrücke können mit runden Klammern gruppiert werden, z.B.

a(bc)?d = ad|abcd

Ansonsten dienen runde Klammern für Referenzen: Auf das Match des ersten in runden Klammern eingeschlossenen Ausdrucks kann beim Suchen mit \1, auf das zweite mit \2 usw. referenziert werden. So matcht z.B. \<(.)[:alpha:]+\1\> auf jedes Wort, dessen erster und letzter Buchstabe gleich sind. In OpenOffice.org ab Version 2.4 können solche Matches in Ersetzen durch auch wieder eingefügt werden (ähnlich wie beim Ersetzen durch-Ausdruck &, jedoch geordnet für Teil-Ausdrücke), wobei das Match des ersten in runden Klammern eingeschlossenen Ausdrucks mit $1, das zweite mit $2 usw. eingefügt werden kann. So könnten Sie z.B. nach \<([:digit:]{2})[:digit:]{3}\> suchen und durch $1XXX ersetzen, um Postleitzahlen zu anonymisieren.

2.1. Hinweise

3. Suchen und ersetzen mit regulären Ausdrücken

Im Dialog Bearbeiten → Suchen & Ersetzen… muss die Option Regulärer Ausdruck aktiviert sein, wenn man Reguläre Ausdrücke als Suchmuster im Suchen- und/oder Ersetzen-Feld verwenden will. In OpenOffice.org ab Version 2 müssen dazu erst Mehr Optionen eingeblendet werden.

Aufgrund technischer Beschränkungen kann "Suchen und Ersetzen mit Regulären Ausdrücken" nicht mit OpenOffice.org Version 1.0 ausgeführt werden.

regex0.png

4. Reguläre Ausdrücke in Calc

Damit Calc reguläre Ausdrücke verarbeitet, muss ihre Verwendung unter Extras → Optionen → Tabellendokument → Berechnen bzw. Extras → Optionen… → OpenOffice.org Calc → Berechnen → Reguläre Ausdrücke in Formeln ermöglichen erlaubt werden.

4.1. Standard-Filter

Im Dialog StandardFilter muss die Option Regulärer Ausdruck aktiviert sein. Im nebenstehenden Beispiel werden alle Datensätze gefunden, die mit A beginnen.

regex1.png

4.2. Spezialfilter

Im Dialog SpezialFilter muss die Option Regulärer Ausdruck aktiviert sein. Mit dem nachstehenden Ausdruck im Kriterienbereich werden alle Datensätze gefunden, die in der Spalte Name mit Sch beginnen UND im Feld Umsatz mindestens den Wert 1000 haben.

regex2.png

A

B

1

Name

Umsatz

2

Sch.*

>=1000

5. Siehe auch


KategorieFachbegriff


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28