Info-Line 08194 / 717 999 6
von Rudi Warttmann
Diese Situation kennen Sie aus der Praxis: Klammerausdrücke sollen ausgezeichnet werden, einschließlich der öffnenden und schließenden Klammer. Es gilt also, einen GREP-Befehl zu erstellen, der die öffnende Klammer, den Text bis zur nächsten schließenden Klammer und dann diese schließende Klammer findet.
Mithilfe dieses GREP-Befehls können Sie über die Absatzformatoptionen dem gefundenen Klammerausdruck automatisch ein vorher definiertes Zeichenformat zuweisen.
Mit dem Fachausdruck »auszeichnen« ist ganz allgemein die abweichende Formatierung zur besonderen optischen Kennzeichnung gemeint; dies kann beispielsweise bedeuten, die Schrift auf »Fett«, »Kursiv« zu stellen oder einzufärben.
Der benötigte GREP-Befehl lautet:
\([^()]*\)
Im Klartext: eine öffnende Klammer \(, gefolgt von null oder mehr Zeichen, die aber weder öffnende noch schließende Klammer sind [^()]*, gefolgt von einer schließenden Klammer \).
Bild: Der GREP-Befehl zum Auffinden von Klammerausdrücken. Selbstverständlich können Sie auch nach eckigen, geschweiften oder spitzen Klammern suchen lassen; letztere tauchen z.B. in HTML-Tags wie <div> oder <h1> auf.
Möchten Sie leere Klammerpaare nicht auszeichnen, dann ersetzen Sie den Stern * im GREP-Ausdruck durch ein Plus-Zeichen +; dieses bedeutet »ein- oder mehrmal«.
Wenn nun der Fall auftritt, dass Klammerausdrücke ineinander verschachtelt sind, dann erzielt dieser GREP-Ausdruck zwar bei den inneren Klammern richtigerweise einen Treffer, aber er erreicht nicht den Gesamt-Klammerausdruck.
Bild: Der oben genannte GREP-Befehl findet nicht wie gewünscht den gesamten Klammerausdruck.
Hier können Sie seit InDesign CS6 zu einem Kniff in GREP greifen, der leider bis heute nicht dokumentiert ist: der rekursiven Anwendung eines GREP-Ausdrucks, ausgedrückt durch |?R. Geben Sie als GREP-String nun ein:
\(([^()]|(?R))*\)
Im Klartext: eine öffnende Klammer \(, gefolgt von null oder mehr Zeichen, die aber weder öffnende noch schließende Klammer sind [^()]* – aber einschließlich im Ausdruck enthaltener Klammerausdrücke, ausgedrückt durch die Rekursion |?R –, gefolgt von einer schließenden Klammer \).
Bild: Der rekursive GREP-Befehl findet nun auch den umschließenden Klammerausdruck.
Der GREP-Ausdruck |?R ist Teil einer kleinen Gruppe von Ausdrücken, die seit InDesign CS6 zur Verfügung stehen. Ebenfalls hingekommen sind insbesondere die Ausdrücke