GREP mit Indesign

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:

14 Gedanken zu “GREP mit Indesign

  1. Vielen Dank für Ihre verständliche Erklärungen, ich konnte endlich einen GREP erstellen für Artikelnummer deren „Ende“ sich immer verändert mit einer neuen Katalogerstellung. Bin richtig happy über die künftige Arbeitserleichterung.
    Suchen nach: (–\d)4 Ersetzen $13
    In diesem Beispiel werden alle Artikelnr mit –(variable, die nicht geändert werden darf)4 am Ende mit 3 geändert
    –> –x3.
    Das bei über 4.000 Artikel Nr…. SUPER! DANKE

  2. Hallo,

    wollte nur darauf hinweisen, dass die Anwendung für Email nicht komplett funktioniert, sobald in der Email (vor dem @-Zeichen) ein Minuszeichen vorkommt.

    Beste Grüße,

    Siri

  3. Stimmt, da habe ich ein Zeichen übersehen. So sollte es aber gehen: [a-z0-9\-\_!#$%&’*+/=?^_`{|}­]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}­]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
    Ich habe auch den Underscore (_) noch mit aufgenommen.

  4. Pingback: IDUGB#20 | IDUG Berlin

  5. Hallo,
    in CS4 geht GREP nicht bei Zeichenformaten sondern nur bei Absatzformaten.
    Ich denke im Text ist das etwas durcheinander gekommen.

    Hier zeigt Adobe mal wieder wie inkonsequent Funktionen umgesetzt sind.
    Da normalerweise innerhalb eines Absatzes auch unterschiedliche Textfarben vorkommen können müsste die GREP-Funktion auch in den Zeichenformaten verfügbar sein. Den genau für solche Absatzüberschreibungen sind Zeichenformate da. Ein weiteres ABSATZformat dafür einzurichten wäre vom logischen Dokumentenaufbau falsch.

    Naja, bin nichts anderes von Adobe gewöhnt.

    Viele Grüße

    • Hallo Jan,
      was im Text gemeint war ist, dass man die GREP Regeln zwar auf Absatzformate anwenden muss, aber das Aussehen der Formatierung dann über Zeichenformate geschieht.
      Viele Grüße,
      Sven

  6. Hallo Herr Brencher,

    ich hab ein kleines Problem und wohl ein Denkfehler,
    ich möchte bei gewisssen Zeichen und Abkürzungen wie %, m, t usw. ein Achhtelgeviert zwischen Zahl und Einheit.

    Bei Suchen/Erstezten sieht das so aus.

    Suchen nach: (\d) (m\W|mm|cm|km|sec|%|m2)
    Ändern in: $1~<$2

    In den Absatzformaten müsste es so sein:
    (\d)~<(m\W|mm|cm|km|sec|%|m2)

    Aber das haut so nicht hin.

    Können Sie mir weiter helfen.

    Herzlcihen Dank
    Dierk Naumann

    • Vielleicht habe ich das ja falsch verstanden, aber bei GREP in den Absatzformaten lassen sich keine Zeichen ersetzen, sondern nur suchen und dann Zeichenformate zuweisen. Du könntest daher höchstens die Laufweite in den Zeichenformaten etwas anpassen. Dadurch wird dann das Leerzeichen etwas schmaler.

  7. DANKE für deine super-gute und ausführliche Erklärung der Suchen/Ersetzen-Funkion!
    DAS suche ich schon seit Ewigkeiten! 🙂

  8. Hallo Herr Brechner,

    gibt es die Möglichkeit über GRIP Mediävalziffern gegen Normalziffern (in der Glyphenpalette von InDesign genannt „Kurze Zahlen“) zu ersetzen?

    Vielen Dank im Voraus
    Anna

  9. Hallo, ich habe im Text immer wieder einen blauen Pfeil (Wingdings-Zeichenformat, der auf eine nachflolgene Kartenkoordinate verweist (also z.B.: Pfeil-Symbol und nachfolgend im Fließtext-Absatzformat z.B. aD3). Gibt es als GREP-Stil eine Möglichkeit zu sagen, dass nach dem Pfeil der Koordinatentext auch blau werden soll (bis zum nächsten Zeilenumbruch)? Da sich das durch alle Bücher in unserem Verlag zieht würde das Text-Formatieren dadurch sehr erleichtert.

    • Hallo Kerstin,
      Du kannst in das GREP Feld Dein Sonderzeichen einfügen gefolgt von .+
      Dann sucht InDesign nach dem Sonderzeichen und allen darauffolgenden Zeichen. Da es ja ein Absatzformat ist, wird es nur bis zum Zeilenumbruch angewendet.
      Viele Grüße
      Sven

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *