[GastForen Programme Print/Bildbearbeitung Adobe InDesign GREP: Lookbehind UND Lookahead

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

GREP: Lookbehind UND Lookahead

Marco Morgenthaler
Beiträge gesamt: 2474

3. Sep 2007, 17:35
Beitrag # 1 von 35
Bewertung:
(119423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich suche einen GREP-Ausdruck, der ein Leerzeichen (normaler Wortzwischenraum) findet, WENN vorher (Lookbehind) entweder S. oder Anm. steht UND nachher (Lookahead) eine (oder mehrere) Ziffer(n) folgen. Ich weiss nur den Ausdruck für ODER (ein senkrechter Strich).

Hintergrund: In meinen Fussnotentexten kommen oft Seitenangaben (S. 90–95) oder Verweise auf andere Fussnoten (siehe Anm. 45) vor. Ich möchte den Leerschlag etwas unterschneiden (via Zeichenformat), damit die Zahl etwas näher zur Abk. steht. Dafür möchte ich keinen festen Leerraum (Achtelgeviert usw.) verwenden.

Für Hilfe immer dankbar, so lerne ich wieder etwas über GREP.

Schönen Abend
Marco

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch
X

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

3. Sep 2007, 17:46
Beitrag # 2 von 35
Beitrag ID: #310810
Bewertung:
(119355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.

Viele Grüße
Martin




als Antwort auf: [#310807]
(Dieser Beitrag wurde von Martin Fischer am 3. Sep 2007, 17:59 geändert)

GREP: Lookbehind UND Lookahead

Gerald Singelmann
  
Beiträge gesamt: 6259

3. Sep 2007, 17:54
Beitrag # 3 von 35
Beitrag ID: #310812
Bewertung:
(119349 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein erster Ansatz war
Code
(?<=(Anm\.|S.)) 

aber das funktioniert interessanterweise nicht. Ich vermute einen Bug in InDesigns Grep, aber es kann auch sein, dass ein LookBehind mit Alternativen nicht definiert ist.


als Antwort auf: [#310810]

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

3. Sep 2007, 17:58
Beitrag # 4 von 35
Beitrag ID: #310813
Bewertung:
(119347 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Gerald,

ich hatte es zunächst vergeblich mit (?<=(Anm|S)\.) (?=\d) versucht.
Die Alternative 'Anm'/'S' ist aber nicht geschluckt worden.
'Anm. [Ziffer]' ist gefunden worden. Aber nicht 'S. [Ziffer]'.

Ist Dir beim Punkt nach dem 'S' der gleiche Fehler wie mir (zunächst) unterlaufen? ;-)

Viele Grüße
Martin




als Antwort auf: [#310812]

GREP: Lookbehind UND Lookahead

Gerald Singelmann
  
Beiträge gesamt: 6259

3. Sep 2007, 18:12
Beitrag # 5 von 35
Beitrag ID: #310820
Bewertung:
(119335 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Ist Dir beim Punkt nach dem 'S' der gleiche Fehler wie mir (zunächst) unterlaufen? ;-)


Na klar...


als Antwort auf: [#310813]

GREP: Lookbehind UND Lookahead

Marco Morgenthaler
Beiträge gesamt: 2474

3. Sep 2007, 18:25
Beitrag # 6 von 35
Beitrag ID: #310822
Bewertung:
(119332 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin und Gerald

Der Code von Martin funktioniert wie gewünscht, herzlichen Dank für die Nachhilfestunde (oder -minute ;o)

Jetzt habe ich zu eurer Diskussion in meinen Unterlagen zu GREP (Autor Gerd Ewald, habe ich hier im Forum runterladen können) Folgendes gefunden:

Zitat Selbstverständlich kann man auch Alternativen in den Assertions [Lookahead, Lookbehind] verwenden. Als Beispiel:
(?<=Einig|Möglich)keit


Das findet keit, wenn Einig oder Möglich davorsteht.

Was offenbar nicht geht, ist die Öffnung einer weiteren Klammerebene, also:
(?<=abc|abde)
ist erlaubt,
(?<=ab(c|de))
geht hingegen nicht.

Aber warum geht nicht einfach
(?<=Anm\.|S\.)
das hat doch keine Doppelklammern?! Keine Ahnung.

Vielleicht findet ihr noch eine Antwort.
Herzliche Grüsse aus Zürich
Marco

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


als Antwort auf: [#310813]

GREP: Lookbehind UND Lookahead

Marco Morgenthaler
Beiträge gesamt: 2474

3. Sep 2007, 18:55
Beitrag # 7 von 35
Beitrag ID: #310831
Bewertung:
(119319 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Weitere Tests mit den von Gerd Ewald in seinem Regex-Tutorial gegebenen Beispielen (siehe oben):

Indesign erlaubt offenbar keine Alternativen im Lookbehind bzw. Lookahead (nur für Lookbehind, also zurückschauend, getestet), auch wenn keine weiteren Klammerebenen geöffnet werden. Der Teilausdruck
(?<=abc|abde)
geht in Indesign also nicht.

Etwas überrascht habe ich auch festgestellt, dass Indesign im GREP-Code keine Umlaute akzeptiert! Also:
(?<=Möglich)keit
findet überhaupt nichts;
(?<=Moglich)keit
findet hingegen «keit» in den Wörtern Moglichkeit und (!) Möglichkeit.

ö wird nicht gefunden, und o ist in GREP o und ö.

Öhm, kann das stimmen? Das wäre etwas seltsam, oder?

Schönen Abend und bis morgen
Marco

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


als Antwort auf: [#310822]

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

3. Sep 2007, 18:58
Beitrag # 8 von 35
Beitrag ID: #310833
Bewertung:
(119315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marco,

das mit den Umlauten ist m.W. ein "anerkannter" Bug.
Ich habe noch nicht überprüft, welche Unicode-Bereiche davon betroffen sind.

Viele Grüße
Martin




als Antwort auf: [#310831]

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

4. Sep 2007, 06:41
Beitrag # 9 von 35
Beitrag ID: #310862
Bewertung:
(119278 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,
Antwort auf: Etwas überrascht habe ich auch festgestellt, dass Indesign im GREP-Code keine Umlaute akzeptiert!


Auch Folgendes funktioniert:
http://(?<=M(ö|o)glich)keit

Ich hatte auch in einem anderen Zusammenhang (Skript-Export der Dateinamen von verknüpften Bildern mit Umlauten Probleme mit Umlauten. Dort waren Umlaute nicht bestimmte Einzelzeichen, sondern eine Kombination von einem Basiszeichen (z.B. 'o') und dem diakritischen Unicode-Zeichen '¨' \u0308 (combining diaresis).

Ob zwischen dem GREP-Umlautproblem und dem o.g. Umlautproblem bei Dateinamen ein Zusammenhang besteht, kann ich nicht sagen.

Viele Grüße
Martin




als Antwort auf: [#310831]

GREP: Lookbehind UND Lookahead

Marco Morgenthaler
Beiträge gesamt: 2474

4. Sep 2007, 12:08
Beitrag # 10 von 35
Beitrag ID: #310916
Bewertung: ||||
(119257 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Zitat ich hatte es zunächst vergeblich mit (?<=(Anm|S)\.) (?=\d) versucht.
Die Alternative 'Anm'/'S' ist aber nicht geschluckt worden


Ich hab's rausgefunden: (?<=(Anm|S)\.) findet wie erwähnt nicht beides,
(?<=(m|S)\.) aber schon. Daraus lässt sich ableiten:

Alternativen in Lookbehind und Lookahead funktionieren dann, wenn die Alternativen die gleiche Anzahl Zeichen aufweisen.

Weiteres Beispiel, um diese Beobachtung zu bestätigen: Gesucht sei der Leerschlag zwischen Anm. oder Abb. und nachfolgender Ziffer, also z. B. der Leerschlag in Anm. 54, Abb. 1 usw.

Der Code (?<=(Anm|Abb)\.) (?=\d) funktioniert wie erwartet, weil Anm und Abb die gleiche Zeichenzahl (3) haben.

Gruss Marco

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


als Antwort auf: [#310813]

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

4. Sep 2007, 12:29
Beitrag # 11 von 35
Beitrag ID: #310922
Bewertung:
(119247 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marco,

gut beobachtet.
Das ist ja seltsam oder muß man sich da nicht wundern?

Viele Grüße
Martin




als Antwort auf: [#310916]

GREP: Lookbehind UND Lookahead

Gerald Singelmann
  
Beiträge gesamt: 6259

4. Sep 2007, 13:01
Beitrag # 12 von 35
Beitrag ID: #310932
Bewertung:
(119237 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Das ist ja seltsam oder muß man sich da nicht wundern?


Das war's, was ich oben mit dem vermuteten Bug meinte. Ich kann mir nicht vorstellen, dass das Backtracking von grep so einen Suchbegriff nicht eigentlich zulassen müsste. Sicher bin ich mir aber auch nicht.


als Antwort auf: [#310922]

GREP: Lookbehind UND Lookahead

Martin Fischer
  
Beiträge gesamt: 12623

4. Sep 2007, 13:06
Beitrag # 13 von 35
Beitrag ID: #310935
Bewertung:
(119235 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Das war's, was ich oben mit dem vermuteten Bug meinte.

Heißt das, Du warst gestern schon da, wo wir dank Marcos Mühe heute angekommen sind?
Das ist die Umkehrung der Geschichte vom Hasen und vom Igel.

Aber was soll's, der Ältere darf auch mal einen Tag früher Recht haben. ;-)

Viele Grüße
Martin




als Antwort auf: [#310932]

GREP: Lookbehind UND Lookahead

Gerald Singelmann
  
Beiträge gesamt: 6259

4. Sep 2007, 13:32
Beitrag # 14 von 35
Beitrag ID: #310941
Bewertung:
(119230 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Heißt das, Du warst gestern schon da, wo wir dank Marcos Mühe heute angekommen sind?

Nicht ganz, mir fiel nur auf, dass die Markierung nach dem Finden (unter bestimmten Umständen, an die ich mich nicht erinnere) der Länge des ersten Alternativums entspricht, auch wenn eigentlich das zwei gefunden wurde. Das schien mir so buggy, dass ich nicht weiter hingeschaut habe. Marco hat dankenswerterweise bestätigt, dass gleich lange Alternativen wirklich funktionieren.


als Antwort auf: [#310935]

GREP: Lookbehind UND Lookahead

Peter Kahrel
Beiträge gesamt: 182

7. Sep 2007, 11:22
Beitrag # 15 von 35
Beitrag ID: #311389
Bewertung:
(119153 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
(I hope you don't mind my writing English)

Two comments about things raised about GREP here. As Marco mentioned, any alternatives in a lookbehind list should be the same length. All GREP implementations have this, it's not a 'feature' of InDesign. Allegedly, allowing for different-length alternatives in lookbehind makes expressions hopelessly inefficient (see Friedl, 'Mastering Regular Expressions, O'Reilly). You can work around this limitation, though, by listing them separately:

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

This expression matches all spaces preceded by S. or Anm. and followed by a digit. The limitation applies only to lookbehind: in lookaheads, alternatives needn't be the same length.

As to the o+umlaut, this character can be represented by unicode 00F6 and by unicodes 006F + 0308 (the plain o followed by the umlaut from the combining diacriticals. (In InDesign you can't see the difference between the two: it shows the o+umlaut as a single character even if you enter o and 0308 separately; this is new in CS3.) You can match any of these by using a wildcard that generalises over accents, \X (capital X):

m\Xglichkeit

matches 'möglichkeit' no matter how o+umlaut was entered, as 00F6 or as 006F+0308. (\X matches any character with any number of following diacritics from the range 0300-0362.)

Hope this is of any use.

Freundliche Grüße,

Peter


als Antwort auf: [#310941]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022