hilfdirselbst.ch
Facebook Twitter gamper-media
Forenindex -- Lesezeichen

5 Lesezeichen für lookbehind

Indesign GREP Ersetzung - Postleitzahl RETURN soll mit Postleitzahl LEERZEICHEN ersetzt werden
Hallo WhiteRabbit,

Du hast hier zwei Möglichkeiten:

1. Einen Abschnitt suchen (die "Klammermethode"), den Abschnitt mit sich selbst ersetzen, den Rest mit dem Leerzeichen.

Suche einen Abschnitt, der 4 oder 5 aufeinanderfolgende Zahlen enthält*, gefolgt von einem Absatzzeichen:
Code
(\d{4,5})\r 


Ersetze den Abschnitt mit sich selbst, den Rest des gefundenen Ausdrucks mit einem Leerzeichen:
Code
$1\x{0020} 


2. Das etwas flexiblere lookbehind.
Suche ein Absatzzeichen vor dem 4 oder 5 aufeinanderfolgende Zahlen stehen:*
Code
\d{4,5}\K\r 


Ersetze durch ein Leerzeichen:
Code
\x{0020} 


Erklärung:
Der "normale" lookbehind ist unflexibel. Variable Fundstellenlängen werden nicht gefunden. Irgendwann mal hat InDesign \K bekommen mit dem auch variable Fundstellenlängen als "lookbehind" funktionieren. Könnte ab InDesign CS6 funktionieren…

* Aber Vorsicht bei beiden Methoden:
Falls Dein Text Zahlen mit mehr als 5 Stellen enthält, wird auch das Absatzzeichen gefunden. Deswegen wäre es wichtig zu wissen, was immer vor der Zahl steht, um dies mit in den GREP einzubeziehen.

Steht die Zahl beispielsweise immer am Absatzanfang, dann würde das mit folgendem Suchausdruck festgezurrt werden:

Korrigierte Methode:
2.1 Das etwas flexiblere lookbehind.

Suche nach einem Absatzzeichen vor dem eine 4 oder 5-stellige Zahl steht, die am Anfang eines Absatzes steht:
Code
^\d{4,5}\K\r 


Ersetze durch ein Leerzeichen:
Code
\x{0020} 


EDIT: Eine etwas präzisere Beschreibung der Suche ergänzt.
...
Uwe Laubender
8. Jan 2016, 07:59
GREP: Lookbehind UND Lookahead
Hallo Marco,

Code
((?<=S\.)|(?<=Anm\.))( )(?=\d) 


(?<=S\.) -> lookahead nach 'S.'
| -> oder
(?<=Anm\.) -> lookahead nach 'Anm.'
( ) -> Leerzeichen (geht auch ohne die Klammern)
(?=\d) -> lookbehind Ziffer.

Eventuell kann man die Alternative des lookahead ((?<=S\.)|(?<=Anm\.)) noch verkürzen.
...
Martin Fischer
3. Sep 2007, 17:46
GREP: Alle Leerräume
Hallo Martin

Deine Vorgaben sollten durch folgenden GREP-Ausdruck erfüllt sein:

Suchen nach: ((?<=\b[\l\u])|(?<=\b[\l\u]{2}))\.(?=[\l\u]{1,2}\.)
Ändern in: .~<

Der GREP-Ausdruck findet also einen Punkt, wenn vorher eine Wortgrenze \b und ein oder zwei Buchstaben [\l\u] stehen (aufgedröselt in zwei Look behind ?<= mit Oder-Verknüpfung |) UND nachher (Look ahead ?=) ein oder zwei Buchstaben [\l\u]{1,2} und ein Punkt \. folgen. Die Gruppe {1,2} funktioniert im Look behind nicht, deshalb die Aufteilung mit «oder».

Bei meinem Test hat’s funktioniert: u.a. z.B. e.g. A.B.C. J.Ch. usw. Bei J.Chr. (drei Buchstaben) müsste der GREP-Ausdruck angepasst werden (zusätzliche ODER-Schleife im Look behind und {1,3} im Look ahead).

Gruss Marco

@Peter: (?<=\u)\.(?=\u\.) works well with uppercase letters only (A.B.C.), but not for u.a., e.g., z.B., J.Ch. etc.
...
Marco Morgenthaler
14. Nov 2007, 17:01
Mal weider GREP
Hallo Kai,

dafür brauchts etwas Umschau - was in der Gegend ist (lookaround).
In diesem Fall lookbehind: ?<=

Ersetzefeld:
Code
(?<=Palette )([^\s]+) 


Suchfeld: [leer] + [Formatoptionen]
-----
edit:
Jetzt überlasse ich das Antworten Gerald.
Der ist eh immer einen Kick schneller.
Kein Wunder, hab GREP schließlich von ihm gelernt. ;-)
...
Martin Fischer
19. Jul 2007, 12:37
Mal weider GREP
Das, was beim Suchen (wenn man einzeln durchgeht) markiert wird, wird auch umformatiert.
Da hilft nur, die Umgebungssuche von grep zu verwenden: im Popupmenü in InDesign findet man Positive/Negative Lookahead/Lookbehind.
Wenn ich also von "Palette Blah" nur das "Blah" formatieren will, muss ich einen Positive Lookbehind machen. Damit könnte ich aber nicht die Reihenfolge tauschen. Um die Reihenfolge tauschen zu können. muss "Palette" gefunden und nicht nur berücksichtigt werden.

Es sei denn, GREP hat noh mehr Tricks auf Lager als ich kenne, was regelmäßig der Fall ist.
...
Gerald Singelmann
19. Jul 2007, 12:37