Antworten auf deine Fragen:
Neues Thema erstellen

GREP-Abfrage zusammenstückeln

marDin_H

Mediapublisher

hallo InDesign-User,

eine Frage zur Zusammenstellung von GREP-Suchabfragen:
ich möchte nach einem Tab suchen
\t
der davor kein Leerzeichen hat
(?<! )\t ein negatives lookbehind
und danach kein Leerzeichen hat
\t(?! ) ein negatives lookahead
und das ganze ersetzen lassen mit einem anderen Ausdruck.

die Suchabfragen funktionieren alle, wenn man sie einzeln anwendet! aber wie bekomme ich sie denn zusammen in einen GREP-Ausdruck. Gesucht wird also folgender Ausdruck: ein Tab, vor dem kein Leerzeichen steht und nach dem ebenfalls kein Leerzeichen steht.

Vielen Dank
 
Zuletzt bearbeitet:

Design & Layout

AW: GREP-Abfrage zusammenstückeln

Leerzeichen? Das ist leider schon mal eine Sache für sich. Es gibt in ID so an die 30 verschiedene Arten von Leerzeichen!

Die Grep-Suche nach \s (Leerräume) findet leider nicht wirklich das, was sie soll (sie findet u. a. auch Tabs und Zeilenschaltungen). Besser ist es, nach den einzelnen Leerzeichen zu suchen z.B.:
Code:
[COLOR=Blue][~m[/COLOR][COLOR=Blue]~>~[/COLOR][COLOR=Blue]>~f[/COLOR][COLOR=Blue]~|[/COLOR][COLOR=Blue]~S[/COLOR][COLOR=Blue]~s[/COLOR][COLOR=Blue]~<[/COLOR][COLOR=Blue]~/~[/COLOR][COLOR=Blue].~3[/COLOR][COLOR=Blue]~4~[/COLOR][COLOR=Blue]%\s] [/COLOR]
Also nicht ganz so einfach, wie sich das Thema initial anhört. Kannst du die Vorkommen der Tabs noch etwas präzisieren, Absatzanfang oder nach Komma vielleicht? Oder immer nach Wörtern oder Zahlen? Textbeispiele?

Eventuell hilft das ja schon:
Code:
\S\t\S
findet alle Tabs, die im Text ohne Leerzeichen davor und danach stehen, allerdings werden keine Tabs gefunden, die ohne Leerzeichen am Absatzbeginn oder ohne Leerzeichen am Absatzende stehen.

Ich warte mal, was du noch „nachlieferst“.

;)
 

marDin_H

Mediapublisher

AW: GREP-Abfrage zusammenstückeln

das ganze verwende ich zur Erstellung eines Inhaltsverzeichnis. vllt. geh ich da etwas komplizierter vor als nötig, aber da ich als Füllzeichen keine normalen Punkte . . . möchte, sondern eine durchgezogene Linie, ist das hier meine Herangehensweise:
zunächst ein Screenshot
Uploaded with

die dritte Zeile zeigt wie das gewünschte Inhaltsverzeichnis aussehen soll. Die blaue Linie als Füllzeichen wurde über ein verschachteltes Format erzeugt, nichts anderes als zugewiesenes Zeichenformat mit Unterstreichung.
Allerdings geht die die Unterstreichung dann nahtlos von Unterkapitel_____bis zur Pagina. im screenhsot bei Kapitel 2 zu sehen. Es sollte aber ein Leerzeichen jeweils dazwischen stehen.

Um dieses Defizit mit dem fehlenden Leerzeichen auszugleichen, kommt eine GREP-Suche ins Spiel: such mir die Tabs im Inhaltsverzeichnis und setzt davor und danach jeweils ein Leerzeichen.
funktioniert prima.

...aber es könnte nun der Fall eintreten, dass mit der GREP-Suche schon alle gewünschten Tabs mit einem Leerzeichen ergänzt wurden. Dann aber wird das Inhaltsverzeichnis kurzfristig noch um ein paar Punkte ergänzt und die GREP-Suche muss erneut ausgeführt werden. Jemand passt nicht auf und fügt den Tabs, die schon richtig sind nochmals ein weiteres Leerzeichen hinzu (also sieht es so aus: Unterkapitel 1, Leerzeichen, Leerzeichen, blaue Unterstreichung, Leerzeichen, Leerzeichen, Pagina)
es würden doppelte Leerzeichen vor und nach dem Tab vorkommen, weil die GREP-Suche nicht differenziert. Daher wollte ich eine GREP-Suche, die ausschließt, das sich davor und danach schon ein Leerzeichen befindet, falls doch, dann einfach überspringen. Art Schutzmechanismus und Kontrolinstanz ;)

die Beschränkung auf »nur« ein Leerzeichen reicht mir schon aus, alle anderen Leerräume kommen hier nicht vor.
der Code \S\t\S funktioniert nicht
 

marDin_H

Mediapublisher

AW: GREP-Abfrage zusammenstückeln

ja Ralf,
das ist die Absicht. Ein Inhaltsverzeichnis mit sich dynamisch anpassenden Strichen.

Wie ist es denn bei dir gelöst?
 

Ellersiek

JedenTag ein wenig besser

AW: GREP-Abfrage zusammenstückeln

Mmmmh, von hinten durch die Brust direkt in Auge:):

  1. Im Inhaltsverzeichnis gibst Du bei "Zwischen Eintrag und Zahl" vor und nach dem Tabluatorzeichen ein Leerzeichen ein:

  2. Du definierst ein Zeichenformat für den Strich:

  3. Und wendest dieses Zeichenformat beim Absatzformat für das Inhaltsverzeichnis an:

Ist vielleicht nicht ganz der direkte Weg, kommt aber ohne GREP aus.

Gruß
Ralf
 
AW: GREP-Abfrage zusammenstückeln

… Ist vielleicht nicht ganz der direkte Weg …
… aber wahrscheinlich der gängigste.

______________________

@marDin_H
ich hatte so eine Wendung fast schon vermutet.
… Kannst du die Vorkommen der Tabs noch etwas präzisieren …
… Ich warte mal, was du noch „nachlieferst“ …

Manchmal ist es doch besser, einige nicht ganz unwichtige „Kleinigkeiten“ mehr über das geplante Projekt zu wissen. Hättest du von Anfang an von einem IHV mit Füllzeichen Tab geredet, dann wäre die Grep-Diskussion wohl gar nicht erst geführt worden.
:p
 

marDin_H

Mediapublisher

AW: GREP-Abfrage zusammenstückeln

jawohl, dann ist das vermutlich die gängigste Variante. mit verschachteltem Format ist klar, hab ich bei mir ja bereits in Verwendung.
trotzdem danke erstmal dafür! das erstellt natürlich ein voll funktionsfähiges Inhaltsverzeichnis.
...bei mir handelt es sich derzeit aber noch um eine Art Buch Dummy, in dem nur einzelne Kapitel vorkommen, ich aber mehr oder weniger ein vollumfängliches IHV brauch (möglich mit einiges an Blindtext im IHV) da kann ich die Methode von Ralf natürlich noch nicht anwenden, daher die andere Herangehensweise, die ich versuchte mit zwei GREP-Abfragen.

aber vielleicht nochmals gefragt, wie »addiert« wenn denn die zwei GREP-Abfragen (?<! )\t und \t(?! ) in korrekter Schreibweise?
einfach hintereinander schreiben geht nicht. wäre ganz interessant fürs Allgemeinverständnis.
 
AW: GREP-Abfrage zusammenstückeln

Grep ist vielschichtig. Es gibt mehrere Wege, ans Ziel zu kommen.

Zuerst einmal: \S\t\S zum Auffinden funktioniert (allerdings nicht in GREP-Stilen!!!). Gefunden wird ein Zeichen, das kein Leerzeichen ist, das gefolgt wird von einem Tab, der gefolgt wird von einem Zeichen, das kein Leerzeichen ist. Zum Ersetzen sollte man allerdings noch die Fundstellen merken lassen:
Code:
(\S)(\t)(\S)
Ersetzen durch:
Code:
$1\s$2\s$3
… aber vielleicht nochmals gefragt, wie »addiert« wenn denn die zwei GREP-Abfragen (?<! )\t und \t(?! ) in korrekter Schreibweise?
einfach hintereinander schreiben geht nicht. wäre ganz interessant fürs Allgemeinverständnis.

Addieren geht ganz einfach:
Code:
[B](?<! )\t[/B][B](?! )[/B]
Wichtiger ist es, was du dann ins Ersetzenfeld einträgst.
Allerdings solltest du auch hier die Fundstelle merken lassen.
Code:
[B](?<!  )[COLOR=Blue]([/COLOR]\t[/B][B][COLOR=Blue])[/COLOR](?! )[/B]
Hier ist es sinnvoller (weil nachvollziehbarer), zwei Ersetzen-Durchgänge durchzuführen. Einmal die fehlenden Leerzeichen einsetzen und dann die Tabulatoren mit einem Zeichenformat belegen.

z.B.: Gefunden wird in deinem Beispiel ein Tab, dem kein Wortzwischenraum vorangeht und dem kein Wortzwischenraum folgt. Diesen Tab kannst du jetzt durch Wortzwischenraum(+Gefunden)$0(+)Wortzwischenraum …
Code:
\s$0\s
(funktioniert auch bei deinem Beispiel ohne „gemerkte Fundstelle")


… oder Wortzwischenraum(+Gefunden erste Stelle)$1(+)Wortzwischenraum …
Code:
\s$1\s
… oder Wortzwischenraum(+ einzusetzender Tabulator)\t(+)Wortzwischenraum …
Code:
\s\t\s
ohne das entsprechende Zeichenformat Unterstreichung ersetzen.
Danach einfach nur nach dem Tabulator \t suchen und das Zeichenformat Unterstreichung zuweisen.

Je nachdem, wie dein IHV aufgebaut ist, könnte es sinnvoll sein, auch nach einem oder mehreren Tabulatoren zu suchen, denen kein Wortzwischenraum vorangeht und keiner folgt.
Code:
[B](?<!\s)(\t+?)(?!\s)[/B]
Diese dann wie oben beschrieben ersetzen.

Ich glaube, jetzt habe ich alle Klarheiten beseitigt.
:D
 
AW: GREP-Abfrage zusammenstückeln

Noch ein kleiner GREP-Nachtrag (nur fürs Verständnis. Ist nicht notwendig für dein IHV).

Du hattest geschrieben:
...aber es könnte nun der Fall eintreten, dass mit der GREP-Suche schon alle gewünschten Tabs mit einem Leerzeichen ergänzt wurden. Dann aber wird das Inhaltsverzeichnis kurzfristig noch um ein paar Punkte ergänzt und die GREP-Suche muss erneut ausgeführt werden. Jemand passt nicht auf und fügt den Tabs, die schon richtig sind nochmals ein weiteres Leerzeichen hinzu (also sieht es so aus: Unterkapitel 1, Leerzeichen, Leerzeichen, blaue Unterstreichung, Leerzeichen, Leerzeichen, Pagina)
es würden doppelte Leerzeichen vor und nach dem Tab vorkommen, weil die GREP-Suche nicht differenziert. Daher wollte ich eine GREP-Suche, die ausschließt, das sich davor und danach schon ein Leerzeichen befindet, falls doch, dann einfach überspringen. Art Schutzmechanismus und Kontrolinstanz ;)
Auch diese Fälle könnte man fast vollständig mit einem GREP „erschlagen“ (Ausnahme: Standardzeilenumbruch direkt vor oder direkt nach dem Tabulator)
Hier einmal ein paar der Möglichkeiten und der dazu notwendige GREP:
Suchen nach:
Code:
\s?[COLOR=Blue][B]([/B][/COLOR]\t+?[COLOR=Blue][B])[/B][/COLOR]\s*[COLOR=Blue][B]([/B][/COLOR]\w?[B][COLOR=Blue])[/COLOR][/B]
Ändern in:
Code:
\s\t\s[COLOR=Blue][B]$[/B][B]2[/B][/COLOR]

Es würde noch einen Ticken einfacher gehen:
Suchen nach:
Code:
\s?\t+?\s*[COLOR=Blue][B]([/B][/COLOR]\w?[B][COLOR=Blue])[/COLOR][/B]
Ändern in:
Code:
\s\t\s[COLOR=Blue][B]$[/B][B]1[/B][/COLOR]
Siehst du den Unterschied?


Kannst du diesen GREP „ins Deutsche übersetzen“?
Was müsstest du z.B. ändern, damit mehrere Wortzwischenräume vor dem Tabulator mit berücksichtigt werden? (Und versuche es bitte nicht direkt vor bzw. direkt nach einem Standardzeilenumbruch)


Mit CS4 oder CS5 könnte der zweite GREP-Durchlauf (siehe mein Posting weiter oben) ausfallen, wenn man einen GREP-Stil definiert: wenn ein Wortzwischenraum von einem Tabulator gefolgt wird, der von einem Wortzwischenraum gefolgt wird, dann formatiere den Tabulator mit dem Zeichenformat Unterstreichung.

Viel Spass beim GREPPEN
;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.477
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben