[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

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

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

t-kittel
Beiträge gesamt: 254

18. Okt 2010, 15:49
Beitrag # 1 von 8
Bewertung:
(2480 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello all,

als GREP-Neuling habe eine kleine Verständnisfrage zum FindChangeByList_mod1.jsx-Script:
Setze ich dieses Script im Indesign ein, erwarte ich, dass die Suchen-Ersetzen-Paare von oben nach unten abgearbeitet und dabei ZUERST ALLE Fundstellen des 1. Suchbegriffs durch den 1. Zielstring ersetzt werden, bevor das 2. Suchen/Ersetzen-Paar zum Zuge kommt.
Ist dem so ?

Mir gelingt es nämlich momentan nicht, die untenstehende simple Zeile PER SKRIPT ausführen zu lassen, obwohl sie manuell reibungslos funktioniert:
Code
grep    {findWhat:"(\d{2})\.(\d{2})"}    {changeTo:"$1:$2"}    {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}    Find all xx.xx and replace with xx:xx. 

Klar, stehe ich mal wieder etwas auf dem Kabel ... aber wer hilft mir herauszufinden, welches der vielen Drähtchen im Kabelstrang unter meinen Füßen das fehlerhafte ist?

Dank im Vorraus! ;o)
Thomas Kittel
X

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

Martin Fischer
  
Beiträge gesamt: 12783

18. Okt 2010, 16:30
Beitrag # 2 von 8
Beitrag ID: #454400
Bewertung:
(2471 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

für das Skript müssen die Backslashes \ escaped werden – d.h. es muss ein zweiter Backslash vorangestellt werden, damit der Backslash als solcher erkannt und nicht als Teil eines anderen Kommandos missverstanden wird:

Code
grep    {findWhat:"(\\d{2})\.(\\d{2})"}    {changeTo:"$1:$2"}    {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}    Find all xx.xx and replace with xx:xx. 


Mit dem Skript RecordFindChange_CS3-CS5.jsx kannst Du übrigens aktuelle Einstellungen in den Suche-Ersetze-Dialogen in einem für FindChangeByList lesbaren Format in eine Textdatei speichern.


als Antwort auf: [#454392]
(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2010, 16:43 geändert)

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

Quarz
Beiträge gesamt: 3555

18. Okt 2010, 16:55
Beitrag # 3 von 8
Beitrag ID: #454404
Bewertung:
(2453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo kittel,

ich kann Dir nur wärmstens das von Martin
genannte Script RecordFindChange CS3-CS5.jsx
empfehlen.

Ein Muß für jeden, der FindChangeByList.jsx
einsetzt.

Mit einer Spende kannst Du auf den Premiumbereich
von HDS zugreifen.
http://www.hilfdirselbst.ch/...do=payment_donation;


Gruß
Quarz

----------------------------------------------------------
InDesign CS4 6.05 + CS5 7.02 | Win7/64 Prof.



als Antwort auf: [#454400]

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

t-kittel
Beiträge gesamt: 254

18. Okt 2010, 17:32
Beitrag # 4 von 8
Beitrag ID: #454412
Bewertung:
(2445 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@Quarz
danke für den Verweis auf RecordFindChange CS3-CS5.jsx, welches nach kurzem Blick darauf ja schon eine weiterentwickelte Variante ist. Ich hatte absichtlich die vereinfachte Version gewählt, um mal einen Einstieg zu finden. Wieso in diesem Falle die "Backslahes noch escaped" werden müssen, werd' ich noch versuchen herauszufinden. Doch leider klappt es auch mit Hans' korrigierter Fassung noch nicht.
P.S.: "P" ich schon :o)

@Hans,
danke für die schnelle Antwort - leider funktioniert auch diese Codezeile noch nicht mit meiner Testdatei:
ein simples Dokument mit einem Textrahmen, darin mehrere, fälschlicherweise mit Punkt formatierten Uhrzeiten z.B. "11.00" oder "13.30", welche per Skript korrekt formatiert werden sollen, also "11:00" und "13:30" - unabhängig davon, wo in der Zeile diese beiden, mit Punkt getrennten Ziffernpärchen stehen.
Wenn meine Annahme bzgl. der Abarbeitung korrekt ist (siehe oben), was für die weitere Formatierung in den nächsten Steps wichtig wäre, z.B. um noch " Uhr" anzuhängen, dann sollten doch im ersten Step ALLE "11.22", unabhängig davon welche Ziffern enthalten sind, zu "11:22" werden, oder?
Was könnte ich dabei noch falsch gemacht haben?

Gruß
Thomas Kittel


als Antwort auf: [#454400]

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

Martin Fischer
  
Beiträge gesamt: 12783

18. Okt 2010, 17:39
Beitrag # 5 von 8
Beitrag ID: #454415
Bewertung:
(2442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich bin nicht Hans.
Deswegen unterlaufen mir ab und an Fehler. :-)

Hatte vergessen, auch den Backslash vor dem Punkt zu escapen.
Geht es so?

Code
grep    {findWhat:"(\\d{2})\\.(\\d{2})"}    {changeTo:"$1:$2"}    {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}    Find all xx.xx and replace with xx:xx. 



als Antwort auf: [#454412]

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

t-kittel
Beiträge gesamt: 254

18. Okt 2010, 18:11
Beitrag # 6 von 8
Beitrag ID: #454418
Bewertung:
(2419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry Hr. Fischer, hier sind einfach zu viele Experten unterwegs, deren Hilfe ich schon in Anspruch nahm :o)
Und nein, leider fruchtet auch das noch nicht.
Stell' ich mich wirklich so blöd an? *grmph*

Hier der komplette Code meiner FindChangeList.txt, nur damit man auch sieht, wie es später weitergehen soll. Ist aber mal alles auskommentiert außer der betreffenden Zeile. Diese liegt im Unterordner "FindChangeSupport" und in der "FindChangeByList_mod1.jsx" selbst muss bzw.darf ich doch nichts ändern, oder?
Code
//FindChangeList.txt 
//A support file for the InDesign CS3 AppleScript FindChangeByList.applescript
//
//This data file is tab-delimited, with carriage returns separating records.
//
//The format of each record in the file is:
//findType<tab>findProperties<tab>changeProperties<tab>findChangeOptions<tab>description
//
//Where:
//<tab> is a tab character
//findType is "text", "grep", or "glyph" (this sets the type of find/change operation to use).
//findProperties is a properties record (as text) of the find preferences.
//changeProperties is a properties record (as text) of the change preferences.
//findChangeOptions is a properties record (as text) of the find/change options.
//description is a description of the find/change operation
//
//Very simple example:
//text {findWhat:"--"} {changeTo:"^_"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double dashes and replace with an em dash.
//
//More complex example:
//text {findWhat:"^9^9.^9^9"} {appliedCharacterStyle:"price"} {include footnotes:true, include master pages:true, include hidden layers:true, whole word:false} Find $10.00 to $99.99 and apply the character style "price".
//
//All InDesign search metacharacters are allowed in the "find what" and "change to" properties.
//
//grep {findWhat:"\t\t+"} {changeTo:"\t"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double tab characters and replace with single tab characters.
//grep {findWhat:"\r\t"} {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a tab character and replace with single returns.
//grep {findWhat:"\t\r"} {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a tab character and replace with single returns.
//grep {findWhat:"\r\r+"} {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double returns and replace with single returns.

//grep {findWhat:" +"} {changeTo:" "} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double spaces and replace with single spaces.
//grep {findWhat:"\r "} {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a space And replace with single returns.
//grep {findWhat:" \r"} {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a space and replace with single returns.
grep {findWhat:"(\\d{2})\\.(\\d{2})"} {changeTo:"$1:$2"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all xx.xx and replace with xx:xx.
//grep {findWhat:"(\d{2}:\d{2}) - (\d{2}:\d{2})"} {changeTo:"$1&#8201;=&#8201;$2 Uhr"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all xx:xx - xx:xx and replace with xx:xx – xx:xx Uhr.
//grep {findWhat:"(\d{2}:\d{2})-(\d{2}:\d{2})"} {changeTo:"$1&#8201;=&#8201;$2 Uhr"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all xx:xx-xx:xx and replace with xx:xx–xx:xx Uhr.


Gruß


als Antwort auf: [#454415]

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

Martin Fischer
  
Beiträge gesamt: 12783

18. Okt 2010, 18:19
Beitrag # 7 von 8
Beitrag ID: #454420
Bewertung:
(2415 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

da wo die großen Abstände sind (also zwischen } und {) muß ein Tabulator stehen. Der Leerraum darf nicht aus Leerzeichen bestehen.
Der Tabulator wirkt hier als Trennzeichen für verschiedene Kommandos.

Bei mir funktioniert die Befehlszeile, wenn ich dafür Sorge treffe, dass zwischen } und { nichts außer einem Tabulator steht. – Genauso zwischen grep und {findWhat.

Also
Code
grep<TAB>{findWhat:"(\\d{2})\\.(\\d{2})"}<TAB>{changeTo:"$1:$2"}<TAB>{includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}<TAB>Find all xx.xx and replace with xx:xx. 

(ersetze <TAB> durch einen Tabulator)


Alternativ könntest Du diese Befehlszeile mit dem o.g. und auch von Quarz für gut befundenen GREP-Rekorder aufzeichnen. ;-)


In den auskommentierten Zeilen in der Nachbarschaft der von Dir hier diskutierten Zeile sind noch jede Menge Backslashes zu escapen. Aber konzentrier Dich ruhig erst mal auf diese eine Zeile.


als Antwort auf: [#454418]
(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2010, 18:29 geändert)

Reihenfolge der GREP-Abarbeitung (hier FindChangeByList_mod1.jsx)

t-kittel
Beiträge gesamt: 254

18. Okt 2010, 18:34
Beitrag # 8 von 8
Beitrag ID: #454422
Bewertung:
(2396 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Tatsächlich!! Na, da habt ihr mich ja wieder ganz schön auf dem linken Fuß erwischt :o)
Copy&Paste ist eben nicht immer Garant für eine 1:1-Kopie, denn der vermeintliche Tab hat sich still und heimlich in mehrere Leerzeichen verwandelt ;o)

Thanks to all !!!
...und den GREP-Rekorder werd' ich sicherlich in Kürze noch ausprobieren - dann aber mit mehr Zeit im Rücken.

Schönen Feierabend!!


als Antwort auf: [#454420]
X