Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » GREP-Nuss

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 21:49
Bewertung:

gelesen: 7316

Beitrag als Lesezeichen
Hallo zusammen,

ich versuche gerade, eine GREP-Nuss zu knacken, was mir aber nicht gelingen will.

Ausgangssituation:
Ich habe einen String, bestehend aus ein fünf Sternen (*, **, ***, ****, *****), gefolgt von einem Leerzeichen.

Zwischen dem letzten Stern und dem Leerzeichen soll ein "Verschachteltes Format hier beenden" (?) (End Nested Style Here) eingefügt werden.

Das funktioniert mit folgendem GREP:
Code
Suche: (\*)(\s) 
Ersetze: $1~h$2

Mein GREP soll aber nicht "destruktiv" sein, d.h. er muss im Rahmen eines Scripts beliebig oft ablaufen können, ohne jedes Mal erneut das Zeichen "Verschachteltes Format hier beenden" einzufügen.

Das erreiche ich grundsätzlich mit folgendem GREP:
Code
Suche: (\*[^~h])(\s) 
Ersetze: $1~h$2


Dieser GREP "erwischt" aber immer die letzten zwei Sterne, nicht nur den letzten. Und wenn es nur einen einzigen Stern gibt, wird gar nichts gefunden…

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 22:29
Bewertung:

gelesen: 7293

Beitrag als Lesezeichen
Hmmm… Tippfehler-Teufel!

Statt
Zitat Ich habe einen String, bestehend aus ein fünf Sternen

muss es heißen:

Ich habe einen String, bestehend aus ein, zwei, drei, vier oder fünf Sternen

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

GREP-Nuss

Quarz
Beiträge gesamt: 3555

17. Jan 2010, 22:32
Bewertung:

gelesen: 7293

Beitrag als Lesezeichen
Hallo Ralf,

Dein Muster (*, **, ***, ****, *****) ist aber
anders als Deine Beschreibung.

Ich habe das GREP mit folgendem Muster getestet:
(* , ** , *** , **** , ***** )

Verschachteltes Format hier beenden habe ich durch ein
Geviert ersetzt, damit ich eine bessere Kontrolle habe.


Suche nach:
(?<!~m)(\*)(?= )
Ändern in:
~m$1

Suche \* vor Space (?= ), wenn nicht davor (?<!~m) ein Geviert


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 22:37
Bewertung:

gelesen: 7288

Beitrag als Lesezeichen
Hallo Quarz,

sorry, ich habe mich missverständlich ausgedrückt. Der String ist entweder *, **, ***, **** oder *****. Also immer nur eine der genannten Möglichkeiten.

Ein paar Beispiele im Klartext:

Hotel Blabla** Ort
Hotel Blabla**** Ort

Da "Ort" (und das was darauf evtl. noch folgt) ein anderes Zeichenformat als der ganze Krempel davor haben muss, brauche ich das Zeichen "Verschachteltes Format endet hier".

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

GREP-Nuss

Quarz
Beiträge gesamt: 3555

17. Jan 2010, 22:48
Bewertung:

gelesen: 7281

Beitrag als Lesezeichen
Hallo Ralf,

wie wäre es hiermit?

Suche nach:
(?<!~h)(?<=\*)( )
Ändern in:
~h$1


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 01:27
Bewertung:

gelesen: 7244

Beitrag als Lesezeichen
Zitat ohne jedes Mal erneut das Zeichen "Verschachteltes Format hier beenden" einzufügen.


Wenn du nach \*(?=\s) suchst und gegen *~h ersetzt, dann wird dieser Stern doch beim nächsten Mal nicht gefunden, weil zwischen ihm und dem \s ein ~h liegt, oder?

Insofern verstehe ich wohl das Problem nicht.

GREP-Nuss

Quarz
Beiträge gesamt: 3555

18. Jan 2010, 08:22
Bewertung:

gelesen: 7184

Beitrag als Lesezeichen
Hallo Gerald,

ich habe ~h an das Space gesetzt, sodass er
den Stern noch finden kann.


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 09:26
Bewertung:

gelesen: 7162

Beitrag als Lesezeichen
Hallo Quarz,

äh... was??

Ralf macht einen Katalog, darin gibt es Hotelbezeichnungen mit Hotelbewertungsangaben und der Angabe, wo die sind.
Also:
Hotel Blabla*** Kairo
Hotel Traraa**** Assuan
Hotel Umpa* München
Hotel Alaaf** Köln

Die würde er gern per verschachteltem Format so formatieren:
Hotel Blabla*** Kairo
Hotel Traraa**** Assuan
Hotel Umpa* München
Hotel Alaaf** Köln

Dazu muss nach dem letzten Stern ein "End nested format here" eingefügt werden. Aber nur eins.

Wenn zwischen dem Stern und dem Leerzeichen bereits ein "End nested format here" eingefügt wurde, soll beim nächsten Suchvorgang nicht erneut ein "End nested format here" eingefügt werden.

Was ich weder bei Ralfs Frage, noch bei deiner Erklärung von heute morgen verstehe: wenn ich nach "Stern gefolgt von einem Leerzeichen" suche und dann dazwischen ein Nicht-Leerzeichen einfüge, dann werde ich diese Stelle beim nächsten Suchvorgang nicht finden.
Das ist doch, was ich will, oder? Genauer: das ist doch, was Ralf will, oder?

Interessant: hast du deinen Vorschlag
Zitat Suche nach:
(?<!~h)(?<=\*)( )
Ändern in:
~h$1

ausprobiert? Ich bin noch nie auf die Idee gekommen, zwei Lookbehinds hintereinander zu schreiben und bin mir überhaupt nicht sicher, was da das definierte Verhalten ist...

GREP-Nuss

Quarz
Beiträge gesamt: 3555

18. Jan 2010, 10:31
Bewertung:

gelesen: 7136

Beitrag als Lesezeichen
Hallo Gerald,

ich habe es an Ralfs letztem Beispiel ausprobiert.

Suche nach:
(?<!~h)(?<=\*)( )
Ändern in:
~h$1

Das soll heißen:
Suche Space vor *, wenn nicht davor ~h steht.
Ersetze ~h und Space

Vielleicht kann man das auch andersherum schreiben;
aber es funktioniert.


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 10:37
Bewertung:

gelesen: 7127

Beitrag als Lesezeichen
Woa, nicht schlecht.

Ich finde meinen Vorschlag trotzdem sehr viel einfacher ;)

Mal schauen, was Ralf sagt.

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

18. Jan 2010, 10:55
Bewertung:

gelesen: 7112

Beitrag als Lesezeichen
Hallo Quarz,
hallo Gerald,

offensichtlich habe ich trotz zweier Nachträge zu meinem Eingangsposting eine wesentliche Sache vergessen zu schreiben (Der Grund für meine "Dusseligkeit" steht am Ende dieses Postings):

Sowohl
Code
(\*)(\s) 

als auch
Code
\*(?=\s) 

finden auch den String *[End Nested Style Here][Leerzeichen].
Als wenn das "End Nested Style Here" auch von "\s" gefunden würde. Deshalb wollte ich es mit diesem GREP ausdrücklich von der Suche ausschließen:
Code
(\*[^~h])(\s) 

Womit ich aber seltsamerweise nur 2 Sterne finden kann, nicht einen einzelnen. In der Praxis könnte ich damit im Augenblick leben, da ich nicht glaube, dass ein einzelner Stern überhaupt vorkommt (Wer bucht schon ein 1-Sterne-Hotel :-)). Aber grundsätzlich stellt es mich natürlich nicht zufrieden…

Quarz' GREP
Code
(?<!~h)(?<=\*)( ) 

den man auch so schreiben könnte:
Code
(?<!~h)(?<=\*)(\s) 

ist jedoch ein echter Volltreffer!

Kompliment und vielen Dank! Ich werde mich später mal intensiv mit dem doppelten Lookbehind auseinandersetzen.


P.S.: Hier hat es gestern Abend und in der Nacht zum ersten Mal seit 10 Jahren geregnet. Dafür aber jetzt drei Gewitter mit Wolkenbrüchen in Folge… Dachziegel, Dachrinnen oder Bauisolierung existieren hier nicht. Ich brauche jetzt das Haus nicht mehr zu verlassen, um schwimmen zu gehen :-( Handtücher und Badelaken haben meinen Mac vor dem Schlimmsten bewahrt. Bevor ich den GREP auseinandernehme, muss ich jetzt erstmal bis zu 4 cm hoch stehendes Restwasser und Sandschlamm aus meiner Hütte entfernen… Damit ich meine Alu-Tastatur auch wieder ohne permanente Stromschläge verwenden kann.

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

GREP-Nuss

Marco Morgenthaler
Beiträge gesamt: 2474

18. Jan 2010, 12:32
Bewertung:

gelesen: 7076

Beitrag als Lesezeichen
Hallo Quarz

Eine tolle Lösung, Kompliment! Offenbar ist es möglich, mehrere Lookbehinds (bzw. Lookaheads) zu kombinieren, was die Feinheit der Suche verbessern kann.
Beispiel für 3 Lookaheads:
Suchen nach: \*(?!~h)(?=\s)(?!\sAssuan)
Ändern in: *~h

Also: Suche *, wenn nachher kein «Verschachteltes Format hier beenden» (~h) steht, sondern ein Leerzeichen (\s), aber kein Leerzeichen gefolgt vom Wort «Assuan».

Sehr praktisch zu wissen, vielen Dank.

Gruss, Marco

PS: Ralfs Aufgabe könnte man auch mit einer Textsuche (ohne Grep) erledigen:
Suchen nach: *[LS]
Ändern in: *^h[LS]
[LS] = Leerschlag
Anders als mit einem analogen Grep wird hier das Sonderzeichen auch bei wiederholter Änderung immer nur einmal gesetzt.

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

18. Jan 2010, 14:29
Bewertung:

gelesen: 7045

Beitrag als Lesezeichen
Hallo Marco,

Antwort auf: Ralfs Aufgabe könnte man auch mit einer Textsuche (ohne Grep) erledigen

Vor lauter "GREP-Enthusiasmus" vergesse ich immer wieder, dass es in InDesign nach wie vor die gute alte Text-Suche gibt ;-)

Du hast natürlich vollkommen Recht und ich (wie auch Quarz und Gerald) hätte mir jede Menge Kopfzerbrechen sparen können…

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

GREP-Nuss

Uwe Laubender
Beiträge gesamt: 5319

18. Jan 2010, 18:25
Bewertung:

gelesen: 7013

Beitrag als Lesezeichen
Hallo, Marco!
Ich weiß nicht, ob die Darstellung der Forenbeiträge nur bei mir "spinnt"? Anbei die Darstellung Deiner GREP-Ausdrücke als Screenshot.
*****
Mit herzlichem Gruß,
Uwe Laubender

Anhang:
GREP-Darstellung.png (46.7 KB)

GREP-Nuss

mk-will
Beiträge gesamt: 1255

18. Jan 2010, 19:14
Bewertung:

gelesen: 6988

Beitrag als Lesezeichen
Hallo Uwe,

nein, nicht nur bei Dir.
Bei mir sieht es genauso aus.

Gruß
Stephan

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

18. Jan 2010, 20:24
Bewertung:

gelesen: 1088

Beitrag als Lesezeichen
Bei mir ist alles in Ordnung. Siehe Screenshot. Vielleicht mag HDS kein deutschsprachiges Mac OS :-) :-) :-)

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

Anhang:
grep_marco.pdf (18.9 KB)

GREP-Nuss

Marco Morgenthaler
Beiträge gesamt: 2474

18. Jan 2010, 22:25
Bewertung:

gelesen: 1059

Beitrag als Lesezeichen
Hallo Uwe und Stephan

Interessant. Was ihr seht, ist eine Vorschau auf Grep unter Indesign CS10 auf einem Quantencomputer (noch geheim, Betaversion) =;o)

Nein, im Ernst, bei mir sieht alles wie bei Ralf aus. Weiss auch nicht, woran es liegt, dass bei euch die kryptischen Zeichen erscheinen.

Gute Nacht, Marco

GREP-Nuss

Jochen Uebel
Beiträge gesamt: 3200

19. Jan 2010, 07:37
Bewertung:

gelesen: 1017

Beitrag als Lesezeichen
Hallo.
Frage mich bzw. Ralf (hoffe, Du bist wieder trocken ;) ) jetzt nur noch, warum Du hier überhaupt mit verschachteltem Format arbeiten musst. Fand im Thema keinen Hinweis für das Warum dieser Zielrichtung.
Warum kein GREP-Stil? Nach dem Muster: Neuer Zeichenstil, vorausgesetzt, Sternchen-Leerschlag geht voraus.
Grüße, Jochen

(Dieser Beitrag wurde von Jochen Uebel am 19. Jan 2010, 07:42 geändert)

Anhang:
grep-statt-verschachteltem-format.png (68.3 KB)

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

19. Jan 2010, 10:32
Bewertung:

gelesen: 988

Beitrag als Lesezeichen
Hallo Jochen,

ich habe mit dem verschachtelten Format gearbeitet, weil ich die Geschichte vor ein paar Jahren noch in CS2 aufgebaut habe. Andere Dinge habe ich längst umgestellt auf GREP Styles, aber in diesem konkreten Fall nicht daran gedacht.

Dank deinem Hinweis habe ich auch diese Formatierung vor ein paar Minuten umgestellt auf GREP Style!


P.S.: Ich bin wieder einigermaßen trocken: http://eg.mediteranb2b.net/index.php?l=deutsch

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)