Suchen und Ersetzen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerhandbuch und Referenz > Bearbeitungsansichten > Textansicht >

Suchen und Ersetzen

In diesem Abschnitt:

 

Suchen nach Text in einem Dokument
Suchoptionen
Ersetzen von Text
Verwendung von Regular Expressions
Beispiele für Regular Expressions

 

Suchen nach Text in einem Dokument

Drücken Sie Strg+F (oder wählen Sie den Menübefehl Bearbeiten | Suchen), um das Suchdialogfeld (rechts oben in der Abbildung unten) aufzurufen. Sie können im gesamten Dokument oder im ausgewählten Text nach dem Begriff suchen, den Sie in das Dialogfeld eingeben.

 

Geben Sie den gewünschten String ein oder verwenden Sie die Auswahlliste, um einen String aus den letzten 10 Such-Strings auszuwählen.
Nach Eingabe bzw. Auswahl des gewünschten String werden alle Übereinstimmungen markiert und die Position der Treffer wird durch beige Markierungen in der Bildlaufleiste gekennzeichnet (siehe Abbildung).
Die gerade ausgewählte Übereinstimmung hat eine andere Markierungsfarbe als die anderen Übereinstimmungen. Ihre Position wird in der Bildlaufleiste durch eine dunkelblaue Cursormarkierung gekennzeichnet.
Unterhalb des Suchbegrifffelds wird die Gesamtzahl der Treffer sowie die Indexposition des aktuell ausgewählten Treffers aufgelistet (siehe Abbildung unten). 2 von 4 zeigt z.B. an, dass gerade der zweite von vier Treffern ausgewählt ist.
Sie können nun durch Auswahl der beiden Schaltflächen Gehe zu vorherigem Ergebnis (Umschalt+F3) und Gehe zu nächstem Ergebnis (F3) auf der rechten Seite in beiden Richtungen von einem Treffer zum nächsten springen.

TextViewFind

Um zwischen dem Such- und Ersetzungsmodus zu wechseln, klicken Sie auf den Abwärtspfeil auf der linken Seite.
Um das Dialogfeld zu schließen, klicken Sie auf die Schließen-Schaltfläche rechts oben.

 

Beachten Sie die folgenden Punkte:

 

Das Suchdialogfeld hat keinen Modus, d.h. es bleibt offen, solange Sie die Textansicht verwenden.
Wenn vor dem Öffnen des Dialogfelds Text ausgewählt ist, so wird der ausgewählte Text automatisch in das Suchfeld eingefügt.
Um einen String innerhalb einer Auswahl zu suchen, gehen Sie folgendermaßen vor: (i) Markieren Sie die Auswahl; (ii) Aktivieren Sie die Option In Auswahl suchen, um die Auswahl zu sperren; (iii) Geben Sie den Suchbegriff ein. Um den Suchbegriff in einer anderen Auswahl zu suchen, heben Sie die Sperre der Auswahl durch Deaktivieren der Option In Auswahl suchen auf, wählen Sie einen anderen Bereich aus und aktivieren Sie die Option In Auswahl suchen wieder.
Nachdem das Suchdialogfeld geschlossen wurde, können Sie die aktuelle Suche durch Drücken von F3 (Weitersuchen) bzw. (Umschalt+F3) für eine Suche nach oben wiederholen. In diesem Fall wird das Suchdialogfeld wieder angezeigt.

 

Suchoptionen

Über Schaltflächen unterhalb des Suchfelds (siehe Abbildung unten) stehen Optionen zum Festlegen der Suchkriterien zur Verfügung. Wenn eine Option aktiv ist, ändert sich die Schaltflächenfarbe in Blau (siehe erste Option (Groß-/Kleinschreibung) in der Abbildung unten).

TextViewFindDialog

Die folgenden Optionen stehen zur Auswahl:

 

GROSS/klein beachten: Wenn die Schaltfläche aktiv ist, wird die Groß- und Kleinschreibung bei der Suche berücksichtigt (Address ist nicht gleich address).
Ganzes Wort: Nur die exakte Wortentsprechung im Text wird gefunden. So wird z.B. bei Eingabe von fit bei Aktivierung der Option ganzes Wort nur das Wort fit gefunden; fit in fitness wird z.B. nicht gefunden.
Regular Expression: Wenn die Option aktiv ist, wird der Suchbegriff als Regular Expression gelesen. Eine Beschreibung zur Verwendung von Regular Expressions finden Sie weiter unten unter Regular Expressions.
Ergebnisse filtern: Wählen Sie eine oder mehrere Dokumentkomponenten, in denen gesucht werden soll.
Anker suchen: Bei Eingabe eines Suchbegriffs werden die Übereinstimmungen im Dokument markiert und eine dieser Übereinstimmungen wird als aktuell ausgewählte markiert. Mit der Ein/Aus-Schaltfläche Anker suchen legen Sie fest, ob diese erste aktuelle Auswahl relativ zur Cursorposition gemacht werden soll. Wenn Anker suchen aktiviert ist, so ist die erste aktuell ausgewählte Übereinstimmung die nächste Übereinstimmung ab der aktuellen Cursorposition. Wenn Anker suchen deaktiviert ist, so ist die erste aktuell ausgewählte Übereinstimmung die erste Übereinstimmung im Dokument ab dem Dokumentanfang gesehen.
In Auswahl suchen: Wenn diese Option aktiv ist, wird der aktuell ausgewählte Text gesperrt und die Suche auf die Auswahl eingeschränkt. Andernfalls wird das gesamte Dokument durchsucht. Bevor Sie einen neuen Textbereich auswählen, heben Sie die aktuelle Auswahl durch Deaktivieren der Option In Auswahl suchen auf.

 

Ersetzen von Text

Um einen Text-String zu ersetzen, gehen Sie folgendermaßen vor:

 

1.Drücken Sie Strg+H (oder wählen Sie den Menübefehl Bearbeiten | Ersetzen) um das Ersetzungsdialogfeld (Abbildung unten) aufzurufen. (Alternativ dazu können Sie auch durch Klick auf den Abwärtspfeil links oben im Dialogfeld zum Ersetzungsmodus des Suchen/Ersetzen-Dialogfelds wechseln).

TextViewReplace

2.Geben Sie den zu ersetzenden String in das Suchfeld und den neuen String in das Ersetzungsfeld ein. Die Anzahl der zu ersetzenden Treffer und der Index des gerade ausgewählten Treffers werden unterhalb des Ersetzungsfelds angezeigt. Die Position der Treffer wird außerdem auch in der Bildlaufleiste durch beige Markierungen gekennzeichnet (siehe Suchen nach Text in einem Dokument weiter oben). In der Abbildung oben sehen Sie z.B., dass für den String type fünf Übereinstimmungen gefunden wurden und dass gerade die dritte dieser Übereinstimmungen ausgewählt ist..
3.Rechts vom Ersetzungsfeld befinden sich die Schaltflächen Nächstes ersetzen und Alles ersetzen. Wenn Sie auf Nächstes ersetzen klicken, geschieht Folgendes: (i) Wenn sich der Cursor neben einem oder innerhalb eines Treffers befindet, so wird dieser ersetzt; (ii) wenn sich der Cursor außerhalb eines Treffers befindet, springt er zum nächsten Treffer. Klicken Sie auf Nächstes ersetzen, um diese Übereinstimmung zu ersetzen. Klicken Sie auf Alles ersetzen, um alle Treffer zu ersetzen.

 

Beachten Sie die folgenden Punkte:

 

Um Text innerhalb einer Auswahl - und nicht im gesamten Dokument - zu ersetzen, gehen Sie folgendermaßen vor: (i) Markieren Sie die Auswahl; (ii) Aktivieren Sie die Option In Auswahl suchen, um die Auswahl zu sperren; (iii) Geben Sie den Such- und den Ersetzungsstring ein; (iii) Klicken Sie je nach Bedarf auf Nächstes ersetzen oder Alles ersetzen. Um Text in einer anderen Auswahl zu ersetzen, heben Sie die aktuelle Auswahl durch Deaktivieren der Option In Auswahl suchen auf, markieren Sie anschließend die neue Auswahl und aktivieren Sie die Option In Auswahl suchen, um die neue Auswahl zu sperren.
Um eine Ersetzungsaktion rückgängig zu machen, drücken Sie Strg+Z oder wählen Sie den Befehl Bearbeiten | Rückgängig.

 

Verwendung von Regular Expressions

Sie können zum Suchen eines Text-String Regular Expressions (regex) verwenden. Aktivieren Sie dazu zuerst die Option Regular Expression (siehe Suchoptionen oben). Damit geben Sie an, dass der Text im Suchfeld als Regular Expression ausgewertet werden soll. Geben Sie als Nächstes die Regular Expression in das Suchfeld ein. Hilfe zur Erstellung von Regular Expressions erhalten Sie durch Klick auf die Schaltfläche Regular Expression Builder rechts vom Suchfeld (siehe Abbildung unten). Klicken Sie auf einen Eintrag im Builder, um die/das entsprechende(n) regex-Metazeichen in das Suchfeld einzugeben. In der Abbildung unten sehen Sie eine einfache Regular Expression zum Suchen von E-Mail-Adressen. Eine kurze Beschreibung zu Metazeichen finden Sie im Abschnitt Regular Expression-Metazeichen weiter unten.

Click to expand/collapse

 

Regular Expression Metazeichen

In der nachstehenden Liste sehen Sie eine Auflistung von Regular Expression-Metazeichen.

 

.

Steht für jedes beliebige Zeichen. Dies ist ein Platzhalter für ein einzelnes Zeichen.

(

Markiert den Beginn eines markierten Ausdrucks.

)

Markiert das Ende eines markierten Ausdrucks.

(abc)

Die Metazeichen ( und )markieren Beginn und Ende eines markierten Ausdrucks. Markierte Ausdrücke eignen sich dazu, eine gesuchte Region zu markieren ("sich diese zu merken"), um diese später referenzieren zu können (Rückreferenz). Es können bis zu neun Unterausdrücke markiert werden (und später im Feld "Suchen" oder "Ersetzen" rückreferenziert werden).

 

So wird etwa mit (the) \1 der String the the gefunden. Dieser Ausdruck erklärt sich folgendermaßen: Suche den String "the" (und merke ihn Dir als markierte Region), gefolgt von einem Leerzeichen, gefolgt von einer Rückreferenz auf die zuvor gesuchte markierte Region.

\n

n ist eine Variable, die Ganzzahlwerte von 1 bis 9 haben kann. Der Ausdruck bezieht sich auf die erste bis neunte markierte Region bei der Ersetzung. Lautet der Suchstring beispielsweise Fred([1-9])XXX und der Ersetzungsstring Sam\1YYY, so bedeutet dies, dass sich im Suchstring ein markierter Ausdruck befindet, der (implizit) mit der Zahl 1 indiziert ist; im Ersetzungsstring wird der markierte Ausdruck mit \1 referenziert. Wenn der Such- und Ersetzungsbefehl auf Fred2XXX angewendet wird, würde Sam2YYY generiert.

\<

Steht für den Beginn eines Worts.

\>

Steht für das Ende eines Worts.

\x

Damit können Sie ein Zeichen x verwenden, das sonst eine spezielle Bedeutung hätte. So würde z.B. \[ als [ und nicht als Beginn einer Zeichenmenge interpretiert werden.

[...]

Kennzeichnet eine Zeichenmenge, [abc] z.B. steht für jedes der Zeichen a, b oder c. Sie können auch Bereiche angeben, z.B. [a-z] für alle Kleinbuchstaben.

[^...]

Die invertierte Zeichenmenge. [^A-Za-z] z.B. steht für jedes Zeichen mit Ausnahme alphabetischer Zeichen.

^

Steht für den Zeilenanfang (es sei denn dieses Zeichen wird innerhalb einer Menge verwendet, siehe oben).

$

Steht für das Zeilenende. Beispiel: A+$ findet ein oder mehrere A's am Ende der Zeile.

*

Steht für 0 oder öfter. Mit Sa*m werden z.B. Sm, Sam, Saam, Saaam usw. gefunden.

+

Steht für 1 oder öfter. Mit Sa+m werden z.B. Sam, Saam, Saaam usw. gefunden.

 

Darstellung von Sonderzeichen

Beachten Sie die folgenden Ausdrücke.

 

\r

Wagenrücklauf (Carriage Return = CR). Zum Suchen oder Erstellen einer neuen Zeile können Sie entweder CR (\r) oder LF (\n) verwenden.

\n

Neue Zeile (LF). Zum Suchen oder Erstellen einer neuen Zeile können Sie entweder CR (\r) oder LF (\n) verwenden.

\t

Tabulatorzeichen

\\

Verwenden Sie diese Zeichen, um Zeichen, die in Regular Expressions vorkommen, mit einem Escape zu versehen, z.B.: \\\n

 

Beispiele für Regular Expressions

In diesem Beispiel wird gezeigt, wie Sie Text mit Hilfe von Regular Expressions suchen und ersetzen können. In vielen Fällen ist das Suchen und Ersetzen von Text unkompliziert und es werden dafür keine Regular Expressions benötigt. Es gibt jedoch Fälle, in denen Sie Text auf eine Art und Weise bearbeiten müssen, wie es mit der normalen Such- und Ersetzungsoperation nicht möglich ist, z.B. wenn Sie eine XML-Datei mit mehreren tausend Zeilen haben, in der Sie bestimmte Elemente in einer einzigen Operation umbenennen müssen, ohne dabei den darin enthaltenen Inhalt zu ändern. Ein weiteres Beispiel: Sie müssen die Reihenfolge mehrerer Attribute eines Elements ändern. Hier sind Regular Expressions hilfreich, da Sie sich damit eine Menge Arbeit ersparen.

 

Beispiel 1: Umbenennen von Elementen

Der unten gezeigte XML-Beispielcode enthält eine Liste von Büchern. Angenommen, Sie möchten das Element <Category> jedes Buchs durch <Genre> ersetzen. Ein der Methoden, mit denen Sie dies erreichen, ist mit Hilfe von Regular Expressions.

 

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="books.xsd">
  <book id="1">
    <author>Mark Twain</author>
    <title>The Adventures of Tom Sawyer</title>
    <category>Fiction</category>
    <year>1876</year>
  </book>
  <book id="2">
    <author>Franz Kafka</author>
    <title>The Metamorphosis</title>
    <category>Fiction</category>
    <year>1912</year>
  </book>
  <book id="3">
    <author>Herman Melville</author>
    <title>Moby Dick</title>
    <category>Fiction</category>
    <year>1851</year>
  </book>
</books>

 

Gehen Sie dazu folgendermaßen vor:

 

1.Drücken Sie Strg+H, um das Such- und Ersetzungsdialogfeld aufzurufen.
2.Klicken Sie auf die Schaltfläche Regular Expressions verwenden _ic_find_regex.
3.Geben Sie in das Suchfeld den folgenden Text ein: <category>(.+)</category> . Mit dieser Regular Expression werden alle category-Elemente gefunden und markiert.

inc-RegexExample01

Um den Text im Inhalt der einzelnen Elemente zu suchen (der im Vorhinein nicht bekannt ist), haben wir den getaggten Ausdruck (.+) verwendet. Der getaggte Ausdruck (.+) bedeutet, "finde eine oder mehrere Instanzen eines beliebigen Zeichens, welches .+ entspricht, und merke Dir diese Übereinstimmung". Wie Sie im nächsten Schritt sehen, benötigen wird die Referenz auf den getaggten Ausdruck später.

 

4.Geben Sie in das Ersetzungsfeld den folgenden Text ein: <genre>\1</genre> . Mit dieser Regular Expression wird der Ersetzungstext definiert. Beachten Sie, dass darin eine Rückreferenz \1 auf den vorhin im Suchfeld getaggten Ausdruck verwendet wird, d.h. \1 bedeutet in diesem Zusammenhang "der Textinhalt der aktuellen <category>-Elementübereinstimmung".
5.Klicken Sie auf Alle ersetzen _ic_regex_replaceall und überprüfen Sie die Ergebnisse. Alle category-Elemente wurden nun, wie geplant, in genre umbenannt.

 

Beispiel 2: Ändern der Reihenfolge von Attributen

Der unten gezeigte XML-Beispielcode enthält eine Liste von Produkten. Jedes Produktelement hat zwei Attribute: id und size. Angenommen, Sie möchten die Reihenfolge der Attribute id und size in allen product-Elementen ändern (d.h. das Attribut size soll vor id stehen). Eine der Lösungsmethoden dafür ist mittels Regular Expressions.

 

<?xml version="1.0" encoding="UTF-8"?>
<products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="products.xsd">
  <product id="1" size="10"/>
  <product id="2" size="20"/>
  <product id="3" size="30"/>
  <product id="4" size="40"/>
  <product id="5" size="50"/>
  <product id="6" size="60"/>
</products>

 

Gehen Sie dazu folgendermaßen vor:

 

1.Drücken Sie Strg+H, um das Such- und Ersetzungsdialogfeld aufzurufen.
2.Klicken Sie auf die Schaltfläche Regular Expressions verwenden _ic_find_regex.
3.Geben Sie ins Suchfeld den folgenden Ausdruck ein: <product id="(.+)" size="(.+)"/> . Mit dieser Regular Expression wird ein product-Element im XML-Dokument gefunden. Beachten Sie, dass zwei Mal ein getaggter Ausdruck (.+) verwendet wird, um den Wert der einzelnen Attribute (der im Vorhinein nicht bekannt ist) zu finden. Mit dem getaggten Ausdruck (.+) wird der Wert jedes einzelnen Attributs gefunden (Der Wert wird als eine oder mehrere Instanzen eines beliebigen Zeichens angenommen, also .+ ).
4.Geben Sie in das Ersetzungsfeld den folgenden Ausdruck ein: <product size="\2" id="\1"/> . Diese Regular Expression enthält den Ersetzungstext für jedes gefundene product-Element. Beachten Sie, dass darin zwei Referenzen \1 und \2 verwendet werden. Diese entsprechen den getaggten Ausdrücken aus dem Suchfeld. Anders ausgedrückt, bedeutet \1 "der Wert des Attributs id" und \2 "der Wert des Attributs size".

inc-RegexExample02

6.Klicken Sie auf Alle ersetzen _ic_regex_replaceall und überprüfen Sie die Ergebnisse. Alle product-Elemente wurden nun aktualisiert, so dass das Attribut size jetzt vor dem Attribut id steht.

 


© 2019 Altova GmbH