Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt GREP-Frage

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

GREP-Frage

faxinger666
Beiträge gesamt: 167

20. Sep 2017, 16:42
Beitrag # 1 von 8
Bewertung:
(5375 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich steh mal wieder aufm Schlauch und bitte um eure Mithilfe:
Ich möchte folgendes erreichen:
Finde genau dieses Zeichen aus den Strings:

12_AZU_2517_555
3_AZL_27_BB

Mein Ansatz ist:
\d{1,2}_AZ?

Aber ich denke es sollte ein positives Lookahead eingebaut werden um genau diesen Buchstaben zu finden...

Um es auch in Worten zu schreiben:
Finde jenen Buchstaben der hinter AZ steht, das AZ hat davor immer einen Unterstrich. Der Unterstrich hat immer ein oder zwei Ziffern.

Oder bin ich komplett falsch?

(Dieser Beitrag wurde von faxinger666 am 20. Sep 2017, 16:43 geändert)
X

GREP-Frage

Ralf Hobirk
Beiträge gesamt: 5961

20. Sep 2017, 17:48
Beitrag # 2 von 8
Beitrag ID: #559552
Bewertung:
(5360 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

dein Ansatz ist falsch ;-)

Du brauchst zunächst einen positiven Lookbehind, der "_AZ" findet. Dann suchst du ein Wortzeichen (alternativ einen Großbuchstaben), und anscxhließend nochmal einen positiven Lookahead, der "_" findet.

Finde ein Wortzeichen:
Code
(?<=_AZ)\w(?=_) 

Finde einen Großbuchstaben:
Code
(?<=_AZ)\u(?=_) 


Anmerkung: Nach den Zahlen am Anfang kannst du nicht suchen, da ein Lookbehind keine Variablen enthalten darf, wie z. B. "\d".

Es gäbe eventuell noch eine Alternative, falls du auch nach den Zahlen am Anfang suchen musst. Dies hängt jedoch davon ab, was mit dem gefundenen Buchstaben gemacht werden soll.


als Antwort auf: [#559549]

GREP-Frage

pixxxelschubser
Beiträge gesamt: 1708

20. Sep 2017, 20:14
Beitrag # 3 von 8
Beitrag ID: #559559
Bewertung:
(5352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: … Anmerkung: Nach den Zahlen am Anfang kannst du nicht suchen, da ein Lookbehind keine Variablen enthalten darf, wie z. B. "\d" …


Kleine Korrektur:
Variablen dürfen schon enthalten sein. Es konnte früher „nur“ nicht nach Suchstrings mit variabler Länge gesucht werden.
Seit CS6 funktioniert das mittlerweile.
Wink
Code
\d{1,2}_AZ\K\u 


würde eigentlich reicht schon reichen.

Aber wenn man auf Nummer sicher gehen will/muss, dann nimmt man den positiven Lookahead mit Unterstrich und Ziffer noch mit dazu.
Code
\d{1,2}_AZ\K\u(?=_\d) 



als Antwort auf: [#559552]

GREP-Frage

faxinger666
Beiträge gesamt: 167

21. Sep 2017, 17:26
Beitrag # 4 von 8
Beitrag ID: #559572
Bewertung:
(5271 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf und pixxelschubser!

Vielen Dank für eure Antworten.

Letztlich ist mein Ziel via Javascript diesen Buchstaben der Teil des ID-Dokumenten-Namens ist ausfindig zu machen und als Variable zu speichern.
Code
 var fName = document.name;  
alert (fName);


Und dabei geht es mir nur um diesen einen Buchstaben aus der Kette.

Vielleicht geht das in JS auch eleganter als über die GREP-Abfrage.

Wichtig ist dass am Anfang des Dateinamens manchmal eine und manchmal zwei Ziffern stehen.
DH. die Länge des Dateinamens variiert, somit kann ich diesen Buchstaben nicht über den Index des Buchstabens angreifen.

LG
faxinger666


als Antwort auf: [#559559]

GREP-Frage

Ralf Hobirk
Beiträge gesamt: 5961

21. Sep 2017, 18:10
Beitrag # 5 von 8
Beitrag ID: #559575
Bewertung:
(5264 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

ich bin zwar nicht wirklich ein Scripter, aber diese Codezeile sollte m. E. das gewünschte Ergebnis liefern:

Code
app.findGrepPreferences.findWhat = '\\d{1,2}_AZ\\K\\u(?=_\\d) '; 


Ich habe Pixxxels GREP dafür genommen, weil der eleganter ist als meiner ;-)


als Antwort auf: [#559572]

GREP-Frage

Kai Rübsamen
Beiträge gesamt: 4684

21. Sep 2017, 18:55
Beitrag # 6 von 8
Beitrag ID: #559576
Bewertung:
(5256 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

deine Zeile füllt das Suchen-Feld. Damit könnte man im Anschluss einen Text INNERHALB des Dokuments durchsuchen. Er will aber Teile des Dokumentnamens prüfen.

Hier gibt es jetzt versch. Möglichkeiten, den String aufzuteilen und dann zu prüfen. Wenn wir bei Regulären Ausdrücken bleiben:

Irre ich mich, oder funktioniert weder
\K
(?<=)
\u

Ich habs daher so gebaut:
Code
var curDoc = app.activeDocument; 
var docName = curDoc.name;

var regex = /\d{1,2}_AZ([A-Z])(?=_\d)/;

if (docName.match(regex)) {
var treffer = docName.match(regex);
alert(treffer[1]);
}



als Antwort auf: [#559575]

GREP-Frage

pixxxelschubser
Beiträge gesamt: 1708

21. Sep 2017, 20:08
Beitrag # 7 von 8
Beitrag ID: #559579
Bewertung:
(5234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
du irrst dich nicht. Diese regulären Ausdrücke funktionieren innerhalb von Adobe Extendscript nur in den winzigen Grenzen der InDesign Javascript-GrepPreferences.


als Antwort auf: [#559576]

GREP-Frage

faxinger666
Beiträge gesamt: 167

22. Sep 2017, 15:15
Beitrag # 8 von 8
Beitrag ID: #559596
Bewertung:
(5162 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen vielen Dank an alle die geholfen haben.

Das Skript von Kai funktioniert perfekt - das ist genau das was ich wollte.

Schönes Wochenende

LG
faxinger


als Antwort auf: [#559576]
X