[GastForen Programme Print/Bildbearbeitung Adobe InDesign

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

GREP-Stil Zahlengliederung - 5er-Zahlen und mehr

Thomas Richard
Beiträge gesamt: 19334

21. Okt 2021, 13:02
Bewertung:

gelesen: 5485

Beitrag als Lesezeichen
Hallo Hannes,

das Problem mit programmierten Automatismen wie GREP eben auch einer ist, ist, dass Programme halt per se total pedantische Korinthenkacker sind, die nehmen alles wörtlich und zwar bis hin zu eigentlich unsichtbarem wie Wordabständen und Spationierungen.


Unterm Strich hilft da leider nur eins, sich auf die Denke des Programms einzulassen (Wir sind Gott sei Dank flexibel genug, wärs andersherum, wäre Programmierung nie seinen ersten Versuchen entwachsen.)

Konkret zu deinen Problemen:

GREP in ID CS6 tut das gleiche, wie in aktuellen Versionen. AFAIR kam mit der CS6 das \k Attribut hinzu, dass optionale Lookbehinds mit Variablen Längen einführte und für bestimmte Zwecke eine erhebliche Erleichterung darstellt, aber eben auch dir schon zur Verfügung stehen sollte.

Grundsätzlich ein guter Spickzettel fürs GREPpen in ID ist das Kapitel zu GREP aus Gregor Fellenz Buch zur ID Automatisierung:
https://www.indesignjs.de/.../04/GREP_Refrenz.pdf

Nun zu deinen Maßeinheiten:

du suchst eben nur nach dem Offensichtlichen, also der reinen Maßeinheit. Wenn das nicht fruchtet, wie in deinem Fall muss man sich einfach anschauen, was die gesuchten Bedingungen weiter eingrenzt, um eben nur zu finden, was auch gefunden werden soll.

In deinem Fall ja eben nicht nur eine beliebige Maßeinheit, sondern eine Maßeinheit mit einer Ziffer davor und eben einem Leerzeichen (oder evtl. noch einem Satzzeichen oder einer schliessenden Klammer) dahinter.

Also wäre der GREP folgendermaßen zu erweitern:
Code
(\d)\s?(m|mm|cm|km|qm|ha|qkm|l|ml|s|min|h|Hz|dB|kg|g|mg|t|Euro|Dollar|€|Prozent|PS|bar|°C)\b 


Das Wortende am Ende des GREPs sorgt nun dafür, dass nur die Maßeinheiten als separates Wort und nicht als Anfang eines anderen Wortes getroffen werden.

Dann muss noch der optionale Wortzwischenraum raus, denn du willst kaum Spationieren UND ein Leerzeichen haben.
Für die Fälle muß man dann getrennt vorgehen.

Nächstes Problem deines GREPs ist, dass ja zuviel gefunden wird. Für die Spationierung brauchts ja nur die letzte Ziffer der Zahl vor der Maßeinheit.

Hier kommt also wieder, wie in dem bisher mißglückten GREP für die 3er Gruppen in längeren Zahlen, ein Lookahead bzw. Lookbehind zum Einsatz.
In deinem Fall ein positives Lookahead (?=Bedingung), sprich nur wenn etwas bestimmtes hinter dem eigentlichen Treffer steht, soll das vorher gefundene als Treffer gewertet werden:

Code
(\d)(?=(m|mm|cm|km|qm|ha|qkm|l|ml|s|min|h|Hz|dB|kg|g|mg|t|Euro|Dollar|€|Prozent|PS|bar|°C)\b) 


(Dieser Beitrag wurde von Thomas Richard am 21. Okt 2021, 13:03 geändert)
Änderungsverlauf:
Beitrag geändert von Thomas Richard (Moderator) am 21. Okt 2021, 13:03