[GastForen Programme Print/Bildbearbeitung Adobe InDesign Problem mit Grep über Script - Abkürzungen

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

Problem mit Grep über Script - Abkürzungen

Guzzi-Birgit
Beiträge gesamt: 81

12. Mai 2017, 11:00
Beitrag # 1 von 9
Bewertung:
(3265 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe HDSler,
ich arbeite seit kurzem mit einer Grepsammlung, die über ein Script ausgeführt wird. Diese Steuerdatei sollte modifiziert werden, um bei Abkürzungen (z.B., u.A., s.o., o.ä.) das Leerzeichen zu entfernen (falls vorhanden) und im nächsten Schritt ein Achtelgeviert einzufügen.

Code
// 
grep {findWhat:"\\<(?i)(e|o|u|s|z)\.\\x{0020}\\<(?i)(a|ä|b|o|u|t|v)\."} {changeTo:"$1\.~<$2\."} {includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}
Löscht Leerzeichen bei e.V., z.B., u.a., z.T. s.o., s.u., o.ä.
//
grep {findWhat:"\\<(?i)(e|o|u|s|z)\.\\<(?i)(a|ä|b|o|u|t|v)\."} {changeTo:"$1\.~<$2\."} {includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}
Fügt bei e. V., z.B., u.a., z.T. s.o., s.u., o.ä. ein Achtelgeviert ein.


So weit so gut. Leider greift Grep jetzt auch bei Satzanfängen (Um Antwort...), interessanter Weise nur bei Wörtern mit zwei Buchstaben.

Ich steh total auf dem Schlauch. Kann mir jemand auf die Sprünge helfen, wo der Fehler liegt?

Sonnige Grüße
Birgit

MAC OS X El Capitan 10.11.6
AdobeCreativeCloud CC2017
X

Problem mit Grep über Script - Abkürzungen

Ralf Hobirk
Beiträge gesamt: 5961

12. Mai 2017, 11:18
Beitrag # 2 von 9
Beitrag ID: #557403
Bewertung:
(3262 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Brirgit,

bei GREP in Javascript muss immer doppelt escaped werden.

Code
\. 

findet ein beliebiges Zeichen.
Um den Punkt zu erwischen, muss es so aussehen:
Code
\\. 



als Antwort auf: [#557402]

Problem mit Grep über Script - Abkürzungen

Guzzi-Birgit
Beiträge gesamt: 81

12. Mai 2017, 11:27
Beitrag # 3 von 9
Beitrag ID: #557404
Bewertung:
(3253 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

ach Mensch, das war ja einfach . . . wenn man es weiß :-)
Klappt einwandfrei, vielen Dank!!!


als Antwort auf: [#557403]

Problem mit Grep über Script - Abkürzungen

funkturmmitte
Beiträge gesamt: 117

15. Mai 2017, 15:33
Beitrag # 4 von 9
Beitrag ID: #557441
Bewertung:
(3041 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hat es einen bestimmten Grund, dass das Achtelgeviert nicht schon im ersten Schritt eingefügt wird?

Z.B. So:

Code
grep	{findWhat:"\\<(?i)(e|o|u|s|z)\\.\\x{0020}?\\<(?i)(a|ä|b|o|u|t|v)\."}	{changeTo:"$1\\.~<$2\\."} 


Gruß
Oliver


als Antwort auf: [#557402]

Problem mit Grep über Script - Abkürzungen

Guzzi-Birgit
Beiträge gesamt: 81

16. Mai 2017, 09:32
Beitrag # 5 von 9
Beitrag ID: #557455
Bewertung:
(2979 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Oliver,

ja, da hab ich mir was bei gedacht. So wie es jetzt ist, also in zwei Durchgängen, »erwische« ich auch die, bei denen die Abkürzungen von vorneherein ganz ohne Leerzeichen geschrieben sind. Das wäre ja anders nicht der Fall.


als Antwort auf: [#557441]

Problem mit Grep über Script - Abkürzungen

funkturmmitte
Beiträge gesamt: 117

16. Mai 2017, 09:59
Beitrag # 6 von 9
Beitrag ID: #557459
Bewertung:
(2972 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit!
In deiner Grep-Suche kommt diese Formulierung vor:
Code
\\x{0020}? 

Das ist ein Leerzeichen, welches vorkommen kann oder auch nicht.
Also wird mit der Suche sowohl z.B. als auch z. B. gefunden - allerdings nur, wenn das Standard Leerzeichen genutzt wird.
Wenn du alle möglichen Leerzeichen abdecken willst müsstest Du statt \\x{0020}? \\p{space_separator}? nutzen.

Gruß
Oliver


als Antwort auf: [#557455]

Problem mit Grep über Script - Abkürzungen

Kai Rübsamen
  
Beiträge gesamt: 4684

16. Mai 2017, 10:01
Beitrag # 7 von 9
Beitrag ID: #557460
Bewertung:
(2972 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit,

das lässt sich auch in einem Durchgang erledigen und dann auch noch ein bisschen eleganter schreiben:

(?i)(\b[eousz]\.)\x20?([aäboutv]\.)

(?i) funktioniert wie ein Schalter. Es reicht also, wenn er 1x gesetzt wird.

\b ob \b oder \< ist egal, \b funktioniert aber vorne u. hinten und ist zumindest für mich vom Zeichen her etwas eindeutiger.

[eousz] Es ist nicht egal, ob du [eousz] oder (e|o|u|s|z) suchst. Im ersten Fall wird nur 1x gesucht um das "z" zu finden, im letzten Fall braucht es 5 Suchläufe. Zeichenklassen sind daher in solchen Fällen immer performanter als Alternationen.

\x20? Du suchst ein Leerzeichen, das da sein kann oder auch nicht. \x20 ist dabei die Kurzschreibweise von \x{0020}. Weil du das Leerzeichen u.U. rauswerfen willst, braucht es vorher und nachher runde Klammern, die dann mit $1 und $2 referenziert werden.

Edit: Ich sehe gerade, Oliver hat in der Zwischenzeit auch etwas geschrieben. @Oliver: Schau dir mal Birgits Beispiel genauer an. Da ist kein "?" hinter dem Leerzeichen. Das hast du wohl autom. gesetzt und daher benötigt sie zwei Durchläufe.


als Antwort auf: [#557455]
(Dieser Beitrag wurde von Kai Rübsamen am 16. Mai 2017, 10:04 geändert)

Anhang:
Bildschirmfoto 2017-05-16 um 09.54.11.png (57.1 KB)

Problem mit Grep über Script - Abkürzungen

Guzzi-Birgit
Beiträge gesamt: 81

16. Mai 2017, 10:23
Beitrag # 8 von 9
Beitrag ID: #557461
Bewertung:
(2959 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai, hallo Oliver,

vielen Dank für eure Tipps, im Moment bin ich schon froh, dass es (so wie es ist) einwandfrei und sehr zügig funktioniert.

Aber ihr habt natürlich recht, das lässt sich bestimmt noch verbessern . . . ich übe noch :-)

Ich werde mich da nochmal ran setzen, wenn ich ein bisschen freie Zeit habe.


als Antwort auf: [#557460]

Problem mit Grep über Script - Abkürzungen

Hans Haesler
Beiträge gesamt: 5826

17. Mai 2017, 21:08
Beitrag # 9 von 9
Beitrag ID: #557506
Bewertung:
(2857 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oliver,

hast Du Deinen Vorschlag im Beitrag #4 ausprobiert?

Bei mir ist das Ergebnis:

Zitat e\. V\., z\. B\., u\. a\., z\. T\. s\. o\., s\. u\., o\. ä\.

Im Ersetzen-Muster muss der Punkt nicht escaped werden.

Falls dennoch: Wenn einfach (= \.), dann passiert zwar nichts. Aber wenn doppelt (= \\.), wird ein Backslash eingefügt.

Gruss, Hans


als Antwort auf: [#557441]
X