Global Regular Expressions Print. Was kann man sich darunter vorstellen? Die Idee hinter GREP ist die Suche nach regulären Ausdrücken bzw. wiederkehrenden Zeichenketten. GREP gibt es aber nicht nur in Indesign sondern in zahlreichen Programmiersprachen, darunter auch in ActionScript3 für Flashanwendungen oder in PHP und ColdFusion für Webapplikationsserver.

Warum ist GREP für Indesign interessant?

Suchen und Ersetzen über GREP Muster in IndesignGREP wurde im Suchen/Ersetzen Dialog zuerst in Indesign CS3 eingeführt und erlaubt es Suchmuster zu generieren und die Treffer zu ersetzen oder mit einem bestimmten Format zu belegen. In Indesign CS4 steht GREP sogar in den Absatzformaten zur Verfügung. Durch einen regulären Ausdruck erkennt Indesign dann z.B. automatisch die Zeichenkette, die zu einer E-Mail Adresse gehört und wendet dann ein gewünschtes Zeichenformat an. Das ganze geht genauso schnell, wie die verschachtelten Formate und spart sehr viel manuelle Formatierung.

Nach was kann man alles suchen?

Generell nach allen Zeichenketten in einem Textrahmen oder einem Absatz, die nach einer festen Regel gebildet werden. Dazu zählen z.B.:

  • Feststehende Wörter oder Begriffe (z.B. eine Firmenbezeichnung, Produktnamen, Zahlenkombinationen)
  • E-Mail Adressen oder Internetseiten
  • Kontonummern, Bankleitzahlen oder Kreditkartennummern
  • Postleitzahlen, Umsatzsteuer IDs, ISBN Codes, Telefonnummern, usw.
  • Preisauszeichnungen in Katalogen
  • Datum und Uhrzeiten
  • Dateinamen und Verzeichnissen

GREP zum Suchen und Ersetzen

Seit Indesign CS3 steht GREP im Suchen und Ersetzen Dialog zur Verfügung. So kann man entweder nach einer Zeichenkette suchen und dieser ein Format zuweisen oder eine gefundene Zeichenkette manipulieren. Teile einer Zeichenkette lassen sich in einer Variablen speichern, auf die man sich beim Ersetzen wieder beziehen kann.

Und so funktioniert es:

Unter Bearbeiten rufen Sie Suchen/Ersetzen auf und klicken dann auf den GREP Reiter. Am einfachsten wählen Sie unter Abfrage eine der mitgelieferten Abfragen aus, darunter praktische Zeitsparer, wie „Entfernen von nachfolgenden Leerräumen“, „Tabs ersetzen“, „Mehrere Leerstellen in einzelne Leerstelle“, „Mehrere Umbrüche in einzelnen Umbruch“ oder „Strich in Halbgeviertstrich“…

GREP in den Absatzformaten

GREP Muster in Absatzformaten von Indesign verwendenIn Indesign CS4 kann man GREP Muster auch in den Absatzformaten zuweisen. Damit überprüft Indesign während der Eingabe von Text, ob dieser einer GREP Zeichenkette entspricht und wendet dann ein Zeichenformat an. Dieser Fall ist ideal, um z.B. Firmen oder Produktnamen automatisch zu formatieren.

Um GREP innerhalb eines Absatzformates einzusetzen, wählen Sie das Format an und gehen in den Formatbereich GREP Stile. Klicken Sie auf „Neuer GREP Stil“ und weisen Sie ein Zeichenformat zu. Wenn noch keines da ist, dann gehen Sie ans Ende der Liste und klicken Sie auf „Neues Zeichenformat“. Da wir noch keine GREP Beispiele durchgegangen sind, tippen Sie einfach ein Wort in das Textfeld. Sowie Indesign dieses Wort innerhalb des Absatzes erkennt, wird das Zeichenformat zugewiesen.

GREP Muster schreiben

GREP kennt sehr viele Kodierungen für die Suche nach Platzhaltern, Sonderzeichen Wiederholungen und Zeichenketten. Indesign hilft Ihnen beim Erstellen eigener GREP Muster. Dazu klicken SIe einfach auf das @-Symbol und wählen aus den folgenden Kategorien aus:

  • Tabstop, Harter Zeilenumbruch, Absatzende
  • Symbole, Marken, Trenn- und Gedankenstriche, Leerraum
  • Anführungszeichen, Umbruchzeichen, Variable, Andere
  • Platzhalter, Stellen, Wiederholungen, Entsprechungen
  • Modifizierer, Posix

Wählt man aus der Liste etwas aus, dann schreibt Indesign automatisch die entsprechende GREP Bezeichnung in das Textfeld. Für Absatzende z.B. \r. GREP kennt hunderte solcher Zeichen und in der Indesign Hilfe findet man eine entsprechende Liste. Ich selbst komme am Besten mit diesen Kategorien klar. Wer komplexe Suchmuster schreiben muss, der möchte vielleicht ein spezielles GREP Tool, wie z.B. RegexBuddy für Windows verwenden. Damit lassen sich GREP Abfragen noch komfortabler erstellen. Für typische Suchmuster hilft aber auch Google: die Eingabe von „GREP E-Mail“ findet zahlreiche GREP Suchmuster für E-Mail Adressen.

Platzhalter und Wiederholungen

GREP kennt verschiedene Platzhalter und Wiederholungen und verwendet dafür oft normale Zeichen. Damit GREP z.B. den Platzahlter für eine beliebige Ziffer von dem Buchstaben „d“ unterscheiden kann, wird dem Platzhalter ein Backslash vorangestellt. So sucht „\d“ nach einer beliebigen Ziffer (digit). Möchte man jetzt angeben, dass diese Ziffer ein oder mehrere Male wiederholt werden darf, so setzt man einfach ein „+“ dahinter. „\d+“ sucht also nach mindestens einer aber beliebig vielen Ziffern. Möchte man wirklich nach einem „+“ suchen, dann muss man selbst den Backslash davor einfügen „\+“ ist keine Wiederholung mehr, sondern sucht nach dem +-Zeichen.

Hier eine Liste der wichtigsten Platzhalter und Wiederholungen, die man aber auch sehr praktisch aus dem Auswahlfeld in Indesign hinzufügen kann:

  • \d beliegige Ziffer (digit)
  • [\l\u] beliebiger Buchstabe, wobei \l nach Klein- und \u nach Großbuchstaben sucht (lowercase/uppercase)
  • . beliebiges Zeichen (\. sucht dementsprechend nach einem Punkt)
  • \s beliebiges Leerzeichen (space)
  • \< sucht nach einem Wortbeginn, dementsprechend \> nach einem Wortende
  • ? bedeutet, dass etwas null oder einmal vorkommen darf
  • * darf null oder mehrere Male vorkommen
  • + ein oder mehrere Male

Wie kann man auf einen Teilstring beim Suchen/Ersetzen Bezug nehmen?

Wenn man einen Teil des gefundenen Musters in der Ausgabe wiederverwenden will, dann hat man folgende Möglichkeit. Im Suchenfeld setzt man den Ausdruck einfach in Klammern. Auf den Suchausdruck innerhalb der Klammern kann man dann mit Hilfe einer Variablen wieder zugreifen. Interessant könnte das sein, wenn man Preise in einem Katalog anders aufbauen möchte (z.B. 21,00 € in 21 Euro und 00 Cent).

So wirds gemacht:

Ich will nach nach Preisen suchen, die folgendermaßen aufgebaut sind. Ein oder mehrere Ziffern (\d+), danach ein Komma, dann zwei beliebige Ziffern (\d\d), ein beliebiges Leerzeichen und zuletzt ein €-Symbol. Auf die Euro- und Cent-Beträge will ich beim Ersetzen wieder zugreifen. Dazu setze ich beide Beträge innerhalb der Suchabfrage in Klammern. Indesign speichert in Klammern gefundene Ergebnisse in Variablen ab, auf die man durch $1, $2 und $n beim Ersetzen wieder zugreifen kann.

Suchmuster: (\d+),(\d\d)\s€
Ersetzen: $1 Euro und $2 Cent

Speichern von Abfragen

Damit man diese Abfragen nicht immer wieder neu zusammenstellen muss, lassen sie sich sehr einfach im Suchen/Ersetzen Dialog als Abfrage speichern.

Typische GREP Beispiele:

Anmerkung: von diesen Beispielen funktionieren nicht alle in den GREP Absatzformatstilen von Indesign CS4.

Kreditkartennummern (gruppiert): (?:4\d{3}[ -]*\d{4}[ -]*\d{4}[ -]*\d(?:\d{3})?|5[1-5]\d{2}[ -]*\d{4}[ -]*\d{4}[ -]*\d{4}|6(?:011|5[0-9]{2})[ -]*\d{4}[ -]*\d{4}[ -]*\d{4}|3[47]\d{2}[ -]*\d{6}[ -]*\d{5}|3(?:0[0-5]|[68][0-9])\d[ -]*\d{6}[ -]*\d{4}|(?:2131|1800)[ -]*\d{6}[ -]*\d{5}|35\d{2}[ -]*\d{4}[ -]*\d{4}[ -]*\d{4})

E-Mail Adresse: [a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

HTML Tags: <((/?)\w+)>

URL: \<(http://)?(www\.)([\d\l\u-]+)\.([\l\u]{2,3})\>

Mehr zum Thema Automatisierung mit InDesign:

Neben GREP Stilen und Suchfunktionen können Sie auch Skripte erstellen, um wiederkehrende Aufgaben in InDesign zu automatisieren. Das Buch „InDesign automatisieren“ von Gregor Fellenz verschafft Ihnen einen guten Überblick darüber, wie Sie mit GREP und Skripting in InDesign Zeit sparen können.

InDesign als Bestandteil der Creative Cloud können Sie über die Adobe Webseite abonnieren oder auch erstmal über ein Zeitraum von 7 Tagen testen: