Suchen, Weitersuchen, Ersetzen
Über den Befehl Suchen (Strg+F) können Sie Textstrings in der Design-Ansicht, im JavaScript Editor sowie in XSLT-Stylesheets suchen.
Welches "Suchen & Ersetzen"-Dialogfeld angezeigt wird, hängt davon ab, welche Ansicht gerade aktiv ist.
•Wenn die Design-Ansicht aktiv ist wird der Fokus bei Klick auf den Befehl Suchen oder Ersetzen auf die Seitenleiste "Suchen & Ersetzen gesetzt. Eine Beschreibung der Such- und Ersetzungsfunktionen der Design-Ansicht finden Sie im Kapitel Seitenleiste "Suchen & Ersetzen.
•Die Such- und Ersetzungsfunktion im JavaScript Editorund XSLT Stylesheets ist in diesem Kapitel beschrieben.
XSLT Stylesheets und JavaScript Editor
Wenn Sie auf dem Register XSLT-für-HTML oder JavaScript Editor den Befehl Suchen auswählen, erscheint das folgende Dialogfeld:
![dlg_edit_find_xslt1](./images/dlg_edit_find_xslt1.png)
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.
•Anker suchen: Bei Eingabe eines Suchbegriffs werden die Übereinstimmungen im Dokument markiert und eine dieser Übereinstimmungen wird als die aktuelle Auswahl markiert. Der Ein/Aus-Befehl Anker suchen legt fest, ob diese erste aktuelle Auswahl relativ zur Cursor-Position gemacht werden soll oder nicht. Wenn Anker suchen aktiv ist, so ist die erste gerade ausgewählte Übereinstimmung die nächste Übereinstimmung ab der aktuellen Cursorposition. Wenn Anker suchen deaktiviert ist, ist die erste aktuell ausgewählte Übereinstimmung, vom Anfang des Dokuments gesehen, die erste Übereinstimmung im Dokument.
•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: Klicken Sie auf dem Register JavaScript Editor links oben im Dialogfeld auf den Nach unten-Pfeil, um das Ersetzen-Feld zu öffnen. Hier können Sie den String eingeben, durch den der gefundene ersetzt werden soll.
HTML-Vorschau
Bei Klick auf den Befehl Suchen in der HTML-Vorschau wird ein einfaches Suchen und Ersetzen-Dialogfeld aufgerufen.
Beachten Sie dazu Folgendes:
•Um Ihre Eingabe mit ganzen Wörtern im XML-Dokument zu vergleichen, aktivieren Sie das Kontrollkästchen "Ganzes Wort". Bei Eingabe von soft wird z.B. nur das ganze Wort soft gesucht; das Fragment soft in software wird nicht gefunden.
•Um Ihre Eingabe mit Wortfragmenten zu vergleichen, lassen Sie das Kontrollkästchen "Ganzes Wort" deaktiviert. Auf diese Art können Sie sowohl nach soft als auch software suchen.
•Damit die Groß- und Kleinschreibung ignoriert wird, lassen Sie das Kontrollkästchen "GROSS/Klein beachten" deaktiviert. Dadurch finden Sie bei Eingabe von soft auch Soft.
Weitersuchen-Befehl
Mit dem Befehl Weitersuchen (F3) wird der Befehl Suchen wiederholt, um nach der nächsten Instanz des gesuchten Texts zu suchen. Eine Beschreibung zur Verwendung der Suchfunktion finden Sie unter Suchen.
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 oben). Dadurch legen Sie fest, dass der Text im Suchbegrifffeld 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. Klicken Sie auf einen Eintrag im Builder, um die/das entsprechende(n) regex-Metazeichen in das Suchfeld einzugeben. Eine kurze Beschreibung zu Metazeichen finden Sie weiter unten.
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"?> |
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 .
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](./images/inc-regexexample01.png)
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 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"?> |
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 .
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](./images/inc-regexexample02.png)
6.Klicken Sie auf Alle ersetzen und überprüfen Sie die Ergebnisse. Alle product-Elemente wurden nun aktualisiert, so dass das Attribut size jetzt vor dem Attribut id steht.