[GastForen Programme Print/Bildbearbeitung Adobe InDesign GREP-Nuss

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 21:49
Beitrag # 1 von 19
Bewertung:
(7315 mal gelesen)
URL zum Beitrag
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…
X

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 22:29
Beitrag # 2 von 19
Beitrag ID: #430486
Bewertung:
(7292 mal gelesen)
URL zum Beitrag
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


als Antwort auf: [#430483]

GREP-Nuss

Quarz
Beiträge gesamt: 3555

17. Jan 2010, 22:32
Beitrag # 3 von 19
Beitrag ID: #430487
Bewertung:
(7292 mal gelesen)
URL zum Beitrag
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



als Antwort auf: [#430483]

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

17. Jan 2010, 22:37
Beitrag # 4 von 19
Beitrag ID: #430488
Bewertung:
(7287 mal gelesen)
URL zum Beitrag
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".


als Antwort auf: [#430487]

GREP-Nuss

Quarz
Beiträge gesamt: 3555

17. Jan 2010, 22:48
Beitrag # 5 von 19
Beitrag ID: #430490
Bewertung:
(7280 mal gelesen)
URL zum Beitrag
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



als Antwort auf: [#430488]

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 01:27
Beitrag # 6 von 19
Beitrag ID: #430492
Bewertung:
(7243 mal gelesen)
URL zum Beitrag
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.


als Antwort auf: [#430483]

GREP-Nuss

Quarz
Beiträge gesamt: 3555

18. Jan 2010, 08:22
Beitrag # 7 von 19
Beitrag ID: #430499
Bewertung:
(7183 mal gelesen)
URL zum Beitrag
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



als Antwort auf: [#430492]

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 09:26
Beitrag # 8 von 19
Beitrag ID: #430507
Bewertung:
(7161 mal gelesen)
URL zum Beitrag
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...


als Antwort auf: [#430499]

GREP-Nuss

Quarz
Beiträge gesamt: 3555

18. Jan 2010, 10:31
Beitrag # 9 von 19
Beitrag ID: #430516
Bewertung:
(7135 mal gelesen)
URL zum Beitrag
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



als Antwort auf: [#430507]

GREP-Nuss

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Jan 2010, 10:37
Beitrag # 10 von 19
Beitrag ID: #430517
Bewertung:
(7126 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Woa, nicht schlecht.

Ich finde meinen Vorschlag trotzdem sehr viel einfacher ;)

Mal schauen, was Ralf sagt.


als Antwort auf: [#430516]

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

18. Jan 2010, 10:55
Beitrag # 11 von 19
Beitrag ID: #430526
Bewertung:
(7111 mal gelesen)
URL zum Beitrag
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.


als Antwort auf: [#430507]

GREP-Nuss

Marco Morgenthaler
Beiträge gesamt: 2474

18. Jan 2010, 12:32
Beitrag # 12 von 19
Beitrag ID: #430551
Bewertung:
(7075 mal gelesen)
URL zum Beitrag
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.


als Antwort auf: [#430516]

GREP-Nuss

Ralf Hobirk
Beiträge gesamt: 5961

18. Jan 2010, 14:29
Beitrag # 13 von 19
Beitrag ID: #430579
Bewertung:
(7044 mal gelesen)
URL zum Beitrag
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…


als Antwort auf: [#430551]

GREP-Nuss

Uwe Laubender
Beiträge gesamt: 5318

18. Jan 2010, 18:25
Beitrag # 14 von 19
Beitrag ID: #430608
Bewertung:
(7012 mal gelesen)
URL zum Beitrag
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.


als Antwort auf: [#430551]
Anhang:
GREP-Darstellung.png (46.7 KB)

GREP-Nuss

mk-will
Beiträge gesamt: 1255

18. Jan 2010, 19:14
Beitrag # 15 von 19
Beitrag ID: #430613
Bewertung:
(6987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

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

Gruß
Stephan


als Antwort auf: [#430608]
X