Archiv des LibreOffice- und OpenOffice.org-Wiki

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

Editieren

1. Praxisbeispiele für die Anwendung regulärer Ausdrücke im Suchen&Ersetzen-Dialog

1.1. Großbuchstaben

Aus dieser Zeichenkette:

reg01.gif

...soll diese sortierte Liste entstehen:

reg02.gif

Im ersten Schritt werden alle Wörter in separate Zeilen übernommen:

Markieren Sie die Zeichenkette.
Suchen nach: [:upper:]?
Aktivieren Sie die Option Exakte Suche (Unterscheidung von Groß- und Kleinbuchstaben)
Aktivieren Sie die Option Regulärer Ausdruck (Schaltfläche Mehr Optionen)
Aktivieren Sie die Option Nur in Selektion
Ersetzen durch: \n&

upper.png

Der Reguläre Ausdruck [:upper:]? sucht (in Kombination mit der Option Exakte Suche) nach genau einem Großbuchstaben
\n& ersetzt die Fundstelle durch ein Absatzende (\n) gefolgt von der Fundstelle (Match) selbst (RegulärerAusdruck &)
Mit Ersetze alle wird dies auf jedes Vorkommen (innerhalb der Selektion) angewandt.

reg03.gif

Im zweiten Schritt werden die einzelnen Begriffe alphabetisch sortiert:

Dazu werden die entstandenen Zeilen markiert und mit Extras → Sortieren in die richtige Reihenfolge gebracht.

reg04.gif

Im dritten Schritt werden die Absatzenden durch ein anderes Trennzeichen ersetzt:

Alle Zeilen der Liste markieren.
Suchen nach: $
Aktivieren Sie die Option Regulärer Ausdruck (Schaltfläche Mehr Optionen)
Aktivieren Sie die Option Nur in Selektion
Ersetzen durch:  - 

divis.png

$ sucht (als RegulärerAusdruck) nach einem Absatzende, jedes Vorkommen (innerhalb der Selektion) wird durch einen Bindestrich mit führendem und nachfolgendem Leezeichen ( - ) ersetzt, wenn auf Ersetze alle geklickt wird.

reg02.gif

1.2. Verschiedene Schreibweisen eines Wortes finden

Im Dokument kommt sowohl Schifffahrt, wie auch Schiff-Fahrt wie auch Schiffahrt wie auch Schiff-fahrt (mit bedingtem Trennzeichen) vor und Sie möchten alle Vorkommen finden.

Suche nach: Schif{1,2}.?fahrt
Aktivieren Sie die Option Regulärer Ausdruck (Schaltfläche Mehr Optionen)
Klicken Sie auf die SchaltFläche Suche alle

12.png

Der Reguläre Ausdruck Schif{1,2}.?fahrt trifft auf alle Zeichenketten zu, die

  1. mit der Zeichenkette Schif oder Schiff beginnen, also das f mindestens ein Mal, aber höchstens zwei Mal enthalten ({1,2}), worauf

  2. ein beliebiges Zeichen (.) genau null oder ein Mal folgt (?) und

  3. mit der Zeichenkette fahrt enden.

(Der Ausdruck trifft also auch auf Schif-fahrt zu oder SchiffXfahrt.)

1.3. Suche mit wildcards: .*

Sie sind es vielleicht aus anderen Zusammenhängen gewohnt, nach Platzhaltern mit einem * zu suchen, etwa in der Art:

Suche nach: *haus*

wobei Hausrat, Hausarzt, Hausbesuch, Hausaufgabe, Hausdächer, Haustür usw. aber auch Bauernhaus, Geschäftshaus, Traumhaus, Fürstenhaus usw. gefunden werden sollen.

OpenOffice.org würde aber mit *haus* gar nichts oder zumindest nicht das Gewünschte finden, weil hier * nur ein Quantifizierer, nicht ein Match selbst ist. Ein beliebiges Zeichen (genau ein Mal) wird in der Syntax der Regulären Ausdrücke von OOo mit . ausgedrückt. Mehrere beliebige Zeichen (.., ... usw.) findet man, indem man sie mit einem Quantifizierer mehrmals finden lässt, also mit * für beliebig oft: .*.

In einem TabellenDokument könnte man den Suchbegriff erweitern auf .*haus.*, also ein beliebiges Zeichen beliebig oft (0, 1 oder mehr Mal), gefolgt von der Zeichenkette haus, gefolgt von einem beliebigen Zeichen beliebig oft (0, 1 oder mehr Mal).
Als Suchergebnis würde man erhalten:

reg05.gif

In fortlaufendem Text (TextDokument) kommt dieses Vorgehen jedoch nicht in Betracht, weil ein beliebiges Zeichen beliebig oft den gesamten Inhalt des Textes bis zum nächsten oder seit dem letzten Zeilen- oder Absatzwechsel findet.
Das Ergebnis würde so aussehen:

reg06.gif

Um zu einem brauchbaren Ergebnis zu kommen, muss die Suche differenziert werden. Man unterscheidet zwischen Wörtern, in denen Haus am Wortanfang steht (RegulärerAusdruck \<) und solchen, in denen haus am Wortende steht (RegulärerAusdruck \>). Dazu werden die beiden Ausdrück mit logisch entweder-oder verknüpft (|). Die Option Exakte Suche (= „case sensitive“) bleibt ausgeschaltet.

[:alpha:]*haus\>|\<haus[:alpha:]*

haus.png

liefert dieses Ergebnis

reg07.gif

Es werden Zeichenketten mit folgenden Eigenschaften gefunden:

  1. Entweder ein beliebiges Zeichen des Alphabets (ohne Ziffern, Satzzeichen, Leerzeichen usw.) ([:alpha:]) beliebig oft (0, 1 oder mehrmals) (*), gefolgt von haus am Wortende (haus\>)

  2. oder haus am Wortanfang (\<haus), gefolgt von einem beliebigem Zeichen des Alphabets (ohne Ziffern, Satzzeichen, Leerzeichen usw.) ([:alpha:]) beliebig oft (0, 1 oder mehrmals) (*),

wobei nicht zwischen Groß- und Kleinschreibung („Exakte Suche“) unterschieden wird.

Also entweder X-Haus (wobei X auch "nichts" sein kann, also nur Haus), oder Haus-X. Doppelhaushälfte würde damit nicht gefunden werden. Dazu wäre ein RegulärerAusdruck wie z.B. \<[:alpha:]*[hH]aus[:lower:]*\> geeignet (dieser funktioniert auch mit aktivierter Option exakte Suche).

1.4. Beliebiges Zeichen bei fortlaufendem Text

In einem Beispieltext sollen die Wörter Beispieltext, beispielhaft wie auch beigelegt gefunden werden, also Wörter, die mit "bei" anfangen und mit "t" enden. Nun könnte man annehmen, der reguläre Ausdruck bei.*t sei dafür geeignet: bei gefolgt von einer beliebigen Anzahl beliebiger Zeichen, gefolgt von einem t.

Man erhält damit jedoch eine einzige lange Fundstelle vom ersten Vorkommen von bei bis zum letzten Vorkommen von t:

reg10.gif

Der Ausdruck beliebiges Zeichen (.) ist zu weit gefasst, weil er auch Satzzeichen und Leerzeichen (nicht jedoch Absatzwechsel) findet. In TextDokumenten führt die Verwendung dieses Such-Ausdrucks deshalb oft zu unerwünschten Ergebnissen; in TabellenDokumenten, wo . nicht über Spalten- und Zeilenwechsel hinweg findet (siehe oben), kann er jedoch für schnelle Suchen geeignet sein.

Wir engen den Regulären Ausdruck von beliebige Anzahl von beliebigen Zeichen ein auf Kleinbuchstaben ein- oder mehrmals: [:lower:] ist die Menge der Kleinbuchstaben (ohne Ziffern, Satzzeichen oder Leerzeichen), + quantifiziert diese mit mindestens ein Mal (nach einem 0-maligen Vorkommen ist in diesem Falle nicht zu suchen, weil es das Wort beit nicht gibt).

[Bb]ei[:lower:]+t

reg11.gif

[Bb] ist die Menge aus B und b, findet also in Verbindung mit dem folgenden ei auch bei eingeschalteter Option Exakte Suche Bei oder bei.

Man könnte die Suche jetzt noch z.B. durch die Bedingungen Wortanfang (\<) oder Wortende (\>) verfeinern (vgl. oben).

1.5. In einem Durchgang nach mehreren Begriffen suchen

Wenn man im gleichen Such-Durchlauf nach mehreren unterschiedlichen Begriffen suchen will, so trennt man die einzelnen Suchbegriffe mit einem |.

Im nebenstehenden Beispieltext sollen alle im Text vorkommenden Eigennamen durch ein bestimmtes Format hervorgehoben werden. Dabei sollen nicht nur die reinen Namen sondern auch Erweiterungen wie Inges, Peterchen oder Gabi-Maus berücksichtigt werden.

reg12.gif

Als regulärer Ausdruck wird im Feld Suchen nach eingegeben:

Anna[^ ]*|Sofie[^ ]*|Peter[^ ]*|Inge[^ ]*|Ingo[^ ]*|Gabi[^ ]*

Der Ausdruck [^ ]* nach jedem Namen bedeutet:
Es sollen auch Begriffe gefunden werden, die mit einem der Suchmuster beginnen und einer beliebigen Anzahl (dafür steht: *) Zeichen beendet werden. Der Ausdruck [^ ] schließt aus der Menge beliebiger Zeichen das Leerzeichen aus, das die Namen jeweils beendet. 1

Mit der Option regulärer Ausdruck veranlaßt man das Programm, das Suchmuster im Feld Suchen nach auszuwerten.

Mit der Option exakte Suche sorgt man dafür, dass Kombinationen wie eingeladen nicht gefunden werden.

Die Suche nach einem beliebigen Zeichen außer einem Leerzeichen ([^ ]) schließt auch Satzzeichen mit ein und würde Komma Punkt, etc in die gefundene Zeichenfolge mit einschließen. Um das zu vermeiden, kann man entweder weitere Zeichen aus der Menge der beliebigen Zeichen mit ausschliessen: [^ .,:] oder den Ausdruck am Wortende (\>) mit aufnehmen:

Anna[^ ]*\>|Sofie[^ ]*\>|Peter[^ ]*\>|Inge[^ ]*\>|Ingo[^ ]*\>|Gabi[^ ]*\>

Um nun den Fundstellen die richtige Formatierung zuzuweisen, gibt es zwei Vorgehensweisen.

Zum einen kann man durch Drücken von Suche alle sämtliche betroffenen Textstellen markieren lassen und danach durch Doppelklick auf eine Zeichenvorlage im Formatvorlagen-Fenster allen Fundstellen diese Zeichenvorlage zuweisen

reg13.gif

Oder man gibt im Feld Ersetzen durch ein & ein, klickt auf den Button Format, wählt die nötigen Eigenschaften und drückt zum Schluss Ersetze alle

Mit dem &-Zeichen im Feld Ersetzen durch weist man das Programm an, die Fundstellen durch sich selbst zu ersetzen (in der Regel nur sinnvoll in Verbindung mit weiteren Zeichen). Im aktuellen Beispiel soll nur durch eine Formatierung ergänzt werden, man könnte aber vor oder nach dem &-Zeichen auch Text einfügen.

reg14.gif

1.6. Störendes Textformat in einer Calc-Zahlenspalte

Beim Datenimport in Calc-Tabellen kann es vorkommen, dass eine Zahlenspalte als Text formatiert ist und mit diesen Werten nicht gerechnet werden kann. In einigen Fällen erkennt man das dadurch, dass beim Anklicken einer solchen Zelle in der EingabeZeile statt beispielsweise 10 '10 steht (führendes ').

Das muss aber nicht sein. Auch wenn eine Zelle zuerst mit einem Textformat belegt wird und anschließend Zahlen ohne ' eingegeben werden, erkennt Calc die Zahlen nicht mehr als solche. Ein Suchen & Ersetzen-Durchlauf bringt Abhilfe:

Suchen nach: ^[0-9]
Ersetzen durch: &
Aktivieren: regulärer Ausdruck

Wenn das ZellenFormat vor der Eingabe der Zahlen bereits auf Text gesetzt war, muss vor dem Durchführen von suchen&ersetzen das Zellformat auf Zahl geändert werden.

1.7. Steuerzeichen

Will man nach Tabulatorsprüngen, Zeilenschaltungen oder Absatzenden suchen, so gibt es auch dafür reguläre Ausdrücke. Anwendungsbeispiele:

\t

zum Suchen nach oder Ersetzen durch einen Tabulator

\n

zum Suchen nach einer Zeilenschaltung (nicht aber zum Ersetzen durch eine Zeilenschaltung)

\n

zum Ersetzen durch einen Absatzwechsel (nicht aber zum Suchen nach einem Absatzwechsel)

$

zum Suchen nach einem Absatzwechsel (nicht aber zum Ersetzen durch einen Absatzwechsel)

^$

zum Suchen nach einem Absatzwechsel, der sich am Zeilenanfag befindet (= leerer Absatz)

Die vollständige Liste der Syntax finden Sie auf der Seite RegulärerAusdruck.

1.8. Leerzeichen

Leerzeichen – auch spezielle ­wie z.B. ein GeschütztesLeerzeichen – können mit aktivierter Option Regulärer Ausdruck im Dialog SuchenUndErsetzen gefunden und ggf. auch eingefügt werden.

Als zu suchenden und/oder zu ersetzenden Begriff verwendet man entweder das Zeichen selbst, indem man je nachdem im Feld Suchen nach oder Ersetzen durch einfach die Leertaste drückt (in diesem Fall muss die Option Regulärer Ausdruck nicht aktiviert werden) oder seinen Hexadezimal-Wert wie z.B. \x0020 für ein einfaches Leerzeichen (U+0020) einträgt (für eine Liste siehe unter LeerZeichen).

Verwendet man stattdessen den regulären Ausdruck [:space:], ist zu beachten, dass dieser nicht direkt für ein konkretes Leerzeichen steht, sondern allgemein für jeglichen white space; daher muss man diesen Ausdruck mit einem Quantifizierer zu [:space:]+, also white space ein- oder mehrmals, oder [:space:]?, also white space null oder ein Mal, ergänzen.

1.9. Geschützte Trennzeichen

Trennzeichen, die mit CTRL+- eingefügt wurden (sog. weiche Trenzzeichen od. soft-hyphen), haben den Code 00AD. Diese findet man man mit dem Suchausdruck \x00AD.

1.10. Siehe auch


KategorieWriter KategorieHowto

  1. Ein Stern allein ist für OpenOffice.org noch kein Platzhalter-Zeichen. Er ist ein sogenannter Quantifizierer und bedeutet: das vor ihm stehende Zeichen soll beliebig oft (0-, 1- oder mehrmals) vorkommen. Oft benutzt man den Stern direkt nach einem Punkt, wobei der Punkt für ein beliebiges Zeichen, außer Zeilenumbruch (↲) oder Absatzwechsel (¶) steht. Ein Punkt gefolgt von einem Stern trifft also zu für: ein beliebiges Zeichen, das gar nicht oder beliebig oft vorkommen kann. Das würde einfach alles finden, ausgenommen Zeilenumbrüche und Absatzwechsel. Daher benutzt man den Ausdruck .* in der Regel auch nicht allein, sondern immer zusammen mit weiteren Einschränkungen.
    Die Zeichenfolge [^] hat die Bedeutung: jedes beliebige Zeichen außer de(n)mjenigen, das innerhalb der Klammern nach dem ^ steht. In unserem Fall sollen die Namen mit allen möglichen Erweiterungen - auch Satzzeichen - gefunden werden, erst wenn ein Leerzeichen kommt, ist Schluss, daher: [^ ]. (1)


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