hilfdirselbst.ch
Facebook Twitter gamper-media

**********************************************
        Facelifting HDS: Danke für deine Unterstützung!

**********************************************

JeT
Beiträge: 29
20. Okt 2017, 19:27
Beitrag #1 von 13
Bewertung:
(3189 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo zusammen,

ich verzweifel gerade, grundsätzlich möchte ich per Absatzformat und Grep einen Abstand bei 1000ern einfügen, also:

z. B. 1 000 oder 20 000...

Aber NUR wenn davor bestimmte Abkürzungen NICHT stehen, wie z. B. "DIN " oder "DIN EN "

Mein Versuch:
Code
((?<!DIN\s)|(?<!DIN\sEN\s))\d(?=\d{3}\b) 


Das funktioniert leider nicht, es wird alles bis 999 999 getrennt, egal ob davor DIN, DIN EN oder nichts steht.


Streiche ich eine Abk., also

Code
(?<!DIN\s)\d(?=\d{3}\b) 


dann wäre das Ergebnis mit "DIN 1000" richtig, aber "DIN 20 000" nicht mehr. Ganz zu schweigen, dass ich mehrere Abkürzungen habe.


Über jede Hilfe dankbar.


Dankeschöön
Jens
(Dieser Beitrag wurde von JeT am 20. Okt 2017, 19:27 geändert)
Top
 
X
mkuenster
Beiträge: 522
24. Okt 2017, 10:16
Beitrag #2 von 13
Beitrag ID: #560140
Bewertung:
(3000 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Wenn ich das richtig sehe, suchst Du nach der ersten Ziffer einer vierstelligen Zahl, wenn davor nicht DIN bzw. DIN EN steht.

Wenn die Zahl aber fünfstellig ist, dann steht vor der gefundenen Ziffer ja noch eine weitere Ziffer und damit muss mehr als DIN bzw. DIN EN ausgeschlossen werden.

Ich hoffe, es ist verständlich, was ich meine. Bin leider kein Experte.

Gruß
Michael
als Antwort auf: [#560068] Top
 
Thomas Richard  M  p
Beiträge: 17686
24. Okt 2017, 14:58
Beitrag #3 von 13
Beitrag ID: #560154
Bewertung:
(2951 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Antwort auf: Wenn ich das richtig sehe, suchst Du nach der ersten Ziffer einer vierstelligen Zahl, wenn davor nicht DIN bzw. DIN EN steht.

Nicht ganz. Gefunden wird eine Ziffer, wenn

• direkt dahinter drei Ziffern und eine Wortgrenze folgen
und
• kein DIN oder DIN EN davor steht.

Das Problem ist aus meiner Sicht die Verknüpfung von negativem Lookbehind und dem oder-Pipe in einer Gesamtklammer. Probiers mal ohne Pipe (also sinngemäss wenn nicht das eine _und_ nicht das andere vorkommt)

(?<!DIN EN )(?<!DIN )\d.(?=\d{3}\b)

Hier wie letztens von Kai schon mal erwähnt: Wichtig ist die Reihenfolge. Erst das umfangreichere ‘DIN EN’ dann erst nur 'DIN', sonst kommt das längere nie zum Zug.

Ansonsten habe ich noch hinter der zu findenden Ziffer einen Punkt für 'ein oder mehrere' eingefügt, damit auch fünfstellige Normen gefunden werden, allerdings versagt das ganze ab einer Million.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/
als Antwort auf: [#560140] Top
 
Thomas Richard  M  p
Beiträge: 17686
24. Okt 2017, 15:24
Beitrag #4 von 13
Beitrag ID: #560155
Bewertung:
(2939 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Uups die Weißräume hat die Zwischenablage gefressen ;-)

Code
(?<!DIN\sEN\s)(?<!DIN\s)\d.(?=\d{3}\b) 


und an Michael: Mein 'nicht ganz' im ersten Satz bezog sich nur auf dein 'vierstellige' Zahlen.
Da vor der 4. Stelle von hinten so ziemlich alles ausser DIN und DIN EN stehen darf, werden grundsätzlich auch mehr als 4-stellige Zahlen gefunden. Problem war ohne den Punkt hinter der zu findenden Zahl, dass fünfstellige Normen durchgeschlüpft sind.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/
als Antwort auf: [#560154]
(Dieser Beitrag wurde von Thomas Richard am 24. Okt 2017, 15:36 geändert)
Top
 
JeT
Beiträge: 29
26. Okt 2017, 07:13
Beitrag #5 von 13
Beitrag ID: #560197
Bewertung:
(2718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo Thomas,

musste deine Lösung erstmal auseinander nehmen, da steht noch ein Leerzeichen am Ende (oder kommt beim Kopieren rein, wenn man wie ich nicht aufpasst :))

Leider klappts noch nicht so ganz, Screenshot:

https://cloud.jenstrost.de/...hp/s/m4wTD9jQRTTwjT8

Wenn man den Punkt rausnimmt, klappt das mit dem DIN aber auch nicht mehr so ganz richtig...
als Antwort auf: [#560155]
(Dieser Beitrag wurde von JeT am 26. Okt 2017, 07:13 geändert)
Top
 
Thomas Richard  M  p
Beiträge: 17686
26. Okt 2017, 12:43
Beitrag #6 von 13
Beitrag ID: #560213
Bewertung:
(2656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Antwort auf: Hmusste deine Lösung erstmal auseinander nehmen, da steht noch ein Leerzeichen am Ende (oder kommt beim Kopieren rein, wenn man wie ich nicht aufpasst :))

Ja, das zaubert leider die hiesige Forensoftware hinein.

Antwort auf: Leider klappts noch nicht so ganz, Screenshot:

https://cloud.jenstrost.de/...hp/s/m4wTD9jQRTTwjT8

Ich weiss zu mindestens auf Anhieb warum es nicht funktioniert Wink
Ich hab es nur per Suchen/Ersetzen getestet und dabei eben Achtelgevierte hineingesetzt, damit sind die ersten Treffer dann für weitere Suchläufe aussen vor, da durch das Achtelgeviert das Suchmuster nicht mehr zutrifft.

Im Fall des Grepstils in dem nur optisch ein Weißraum hinzugefügt wird, wird eben bei mehr als vierstelligen Ziffern ein Zahlenpärchen (1. und 2. Stelle gefunden), und beide bekommen einen Weißraum hinten angestellt.
Wie hast du denn die Auszeichung des Weißraums in deinem Stil angelegt?

Warum die alleinstehende 3000 nicht anschlägt, ist mir noch schleierhaft ...

Und das der eigentlich in den 9999999 hineingehörende 2. Weißraum nicht funktioniert, hatte ich ja bereits geschrieben. Der funktionierte bei dir aber auch nie, da du immer nur nach 3 Ziffern vor dem Wortende gesucht hast. Ich hatte einfach mal vermutet, solch große Zahlen wären nicht relevant.

Antwort auf: Wenn man den Punkt rausnimmt, klappt das mit dem DIN aber auch nicht mehr so ganz richtig...

Ohne den Punkt kann es nicht klappen, hatte ich ja oben bereits geschrieben, denn dann würde sowohl DIN 12345 als auch DIN EN 12345 in die Treffer aufgenommen.

Lösbar wäre es mit vier Ausschlusskriterien:

Code
(?<!DIN\s)(?<!EN\s)(?<!DIN\s\d)(?<!EN\s\d)\d(?=\d{3}\b) 


Nachtrag: Aber vielleicht ist das mit der nicht gefundenen 3000 ja auch gar nicht so wild, denn wenn du Normen in voller Schreibweise hast die bereits aktualisiert wurden, steht ja immer ne Jahreszahl hinten dran:
Zitat ISO 12647-7:2016



MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/
als Antwort auf: [#560197]
(Dieser Beitrag wurde von Thomas Richard am 26. Okt 2017, 12:56 geändert)
Top
 
Kai Rübsamen  M  p
Beiträge: 4483
26. Okt 2017, 13:01
Beitrag #7 von 13
Beitrag ID: #560216
Bewertung:
(2649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo Alle!

Thomas GREP scheint bei mir wieder andere Sachen zu finden, s. screen.

Ich hab jetzt drei Versuche unternommen u. es nicht hinbekommen. D.h. entweder denke ich falsch oder es geht nicht …

Was bisher (hoffentlich) klar ist:

((?<!DIN\s)|(?<!DIN\sEN\s)) DAS oder DAS darf nicht vorkommen

(?<!DIN EN\s)(?<!DIN\s) DAS und DAS darf nicht vorkommen

Das passt bei Thomas, ebenso die Reihenfolge.

Jetzt aber das eigentliche Problem:
\d(?=\d{3}\b) oder \d.(?=\d{3}\b) gehen nicht.

Dreiergruppen muss ich von hinten finden. Das macht man so:
\d(?=(\d{3})+\b)

Was wir jetzt brauchen ist Folgendes:
Es muss eine komplette Zahl gefunden werden, vor der nicht DIN oder DIN EN stehen darf und dann muss diese Zahl von hinten gegliedert werden.

(?<!DIN EN )(?<!DIN )\d. prüft aber nicht die ganze Zahl, sondern nur die erste Ziffer. Jens Screenshot ist daher m.E. falsch.

Und was ist jetzt das Problem?
Das Problem ist, dass wir links einen Anker setzen, rechts aber auch.

Ich hatte dann das hier versucht:
(?<!DIN EN\s)(?<!DIN\s)(?=\b)\d+\d*?\K\d(?=(\d{3})+\b)

Das schließt alle Zahlen in DIN usw. aus. Hier will er aber die Dreiergruppen nicht mehr :(

@Thomas: Während ich das hier geschrieben habe, hast du eine neue Lösung vorgestellt. Die funktioniert aber bei mir auch nicht, s. screen 2?!

Edit: Ich bin übrigens für zwei Durchläufe per S&E.

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#560197]
(Dieser Beitrag wurde von Kai Rübsamen am 26. Okt 2017, 13:03 geändert)
Top

Anhang:
GREP.png (80.1 KB)
 
GREP_neu.png (81.4 KB)
 
Thomas Richard  M  p
Beiträge: 17686
26. Okt 2017, 13:27
Beitrag #8 von 13
Beitrag ID: #560217
Bewertung:
(2641 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo Kai,

nur kurz zu deinem Einwand: Es wäre den normungswütigen Deutschen als angestrebtes Ziel zwar durchaus zuzutrauen, aber da die DIN Nummern in der Regel einfach durchnummeriert werden, sind wir noch ne Weile vor 6 und noch mehr stelligen Normen gefeit ;-)

Ich sehe eher das Problem, dass wenn Normen auftauchen auch Jahreszahlen auftauchen, und die will eigentlich auch keiner mit Tausendertrennung sehen.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/
als Antwort auf: [#560216]
(Dieser Beitrag wurde von Thomas Richard am 26. Okt 2017, 13:30 geändert)
Top
 
pixxxelschubser p
Beiträge: 1541
26. Okt 2017, 13:45
Beitrag #9 von 13
Beitrag ID: #560219
Bewertung:
(2633 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo @JeT,
du hast dir ein sehr komplexes Thema „herausgesucht“. Und weil das Thema so komplex ist fehlen einfach noch zu viele Angaben von dir:
InDesign-Version?
kommen Jahreszahlen vor?
kommen Zahlen im Bereich über 999999 vor?

IMHO würde ich auch eher (wie Kai) zwei Suchen & Ersetzen Durchgänge wählen. Wenn es aber unbedingt mit Grepstilen gelöst werden soll, dann könnte ich mir einen etwas kruden Workaround wie folgt vorstellen:
- formatiere alle Zahlen mit Tausendertrennung (Laufweite als Spatium)
- überschreibe dieses Format 1 bei „sicheren“ Jahreszahlen mit Laufweite 0
- und überschreibe das Format 1 wenn DIN oder EN voransteht mit Laufweite 0

Das Problem ist hier nur die Unterscheidung von echten Jahreszahlen und anderen vierstelligen Zahlen.
siehe Screenshot

viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


als Antwort auf: [#560197] Top
 
JeT
Beiträge: 29
26. Okt 2017, 14:24
Beitrag #10 von 13
Beitrag ID: #560221
Bewertung:
(2613 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hallo an alle,

dass es nicht so einfach zu lösen ist, habe ich schon befürchtet. Ich hatte gehofft einen einfachen Denkfehler zu haben, wenn es so nicht zu lösen ist, ist S&E durchaus die bessere Lösung.

Zitat Im Fall des Grepstils in dem nur optisch ein Weißraum hinzugefügt wird, wird eben bei mehr als vierstelligen Ziffern ein Zahlenpärchen (1. und 2. Stelle gefunden), und beide bekommen einen Weißraum hinten angestellt.
Wie hast du denn die Auszeichung des Weißraums in deinem Stil angelegt?


Über einen positiven Wert in der Laufweite

Zitat Und das der eigentlich in den 9999999 hineingehörende 2. Weißraum nicht funktioniert, hatte ich ja bereits geschrieben. Der funktionierte bei dir aber auch nie, da du immer nur nach 3 Ziffern vor dem Wortende gesucht hast. Ich hatte einfach mal vermutet, solch große Zahlen wären nicht relevant.

Sind sie auch nicht, ich habe es der Vollständigkeit halber mal reingenommen, einfach um zu sehen, obs vielleicht (zufällig ^^) funktioniert.

Zitat Ich sehe eher das Problem, dass wenn Normen auftauchen auch Jahreszahlen auftauchen, und die will eigentlich auch keiner mit Tausendertrennung sehen.

In meinem Fall habe ich keine Jahreszahlen,... warum eigentlich nicht...hm ;)

Zitat InDesign-Version?
kommen Jahreszahlen vor?
kommen Zahlen im Bereich über 999999 vor?

– CS6, aber spielt das eine Rolle? Hat sich da an grep in der CC etwas geändert?
– Nein
– Nein
als Antwort auf: [#560219] Top
 
pixxxelschubser p
Beiträge: 1541
26. Okt 2017, 14:38
Beitrag #11 von 13
Beitrag ID: #560223
Bewertung:
(2600 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Zitat … In meinem Fall habe ich keine Jahreszahlen …

Dann ist’s ja gut.

Zitat … CS6, aber spielt das eine Rolle? …

Natürlich spielt die Version eine Rolle. Ein Teil der von mir gezeigten Grepstile würden in Versionen unter CS6 nicht funktionieren.

Hast du dir meinen Screenshot einmal genauer angesehen?

viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


als Antwort auf: [#560221] Top
 
JeT
Beiträge: 29
26. Okt 2017, 18:11
Beitrag #12 von 13
Beitrag ID: #560231
Bewertung:
(2550 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hi pixxxelschubser

Zitat Natürlich spielt die Version eine Rolle. Ein Teil der von mir gezeigten Grepstile würden in Versionen unter CS6 nicht funktionieren.

Okay ich beschäftige mich erst seit 1-2 Jahren etwas intensiver mit Grep, deswegen ist mir das so nicht bewusst gewesen.

Dein Screenshot sieht top aus! Kleiner Haken, den du aber ja schon angesprochen hast, ist eben die Korrektur der Jahreszahl. Spielt für mich aber keine Rolle.

Das \K ist mir schon mal hier untergekommen, das scheint ja wirklich ein Wunderheilmittel zu sein :) Gibt es empfehlenswerten Indesign-bezogenen Lesestoff, wo so fortgeschrittenere Ausdrücke/Parameter erklärt werden?


Vielen, vielen Dank für eure Hilfe. Die Aufteilung von pixxxelschubser ist vielleicht nicht so elegant, aber sie funktioniert für meine Zwecke (wenn man eben keine Rücksicht auf Jahreszahlen nehmen muss)
als Antwort auf: [#560223] Top
 
Ralf Hobirk S
Beiträge: 5754
26. Okt 2017, 19:11
Beitrag #13 von 13
Beitrag ID: #560234
Bewertung:
(2527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Stil / Tausender-Trennung nur unter bestimmten Umständen


Hi Jens,

das hier ist für mich schon seit Jahren die InDesign-GREP-Bibel:

http://shop.oreilly.com/...80596156015_external

Ansonsten hat der Autor Peter Kahrel auch so Einiges auf seiner Website:

http://www.kahrel.plus.com/...gn/grep_matters.html

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#560231] Top
 
X