hilfdirselbst.ch
Facebook Twitter gamper-media

**********************************************
        Facelifting HDS: Danke für deine Unterstützung!

**********************************************


faxinger666
Beiträge: 58
20. Sep 2017, 16:42
Beitrag #1 von 8
Bewertung:
(2592 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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)
Top
 
X
Ralf Hobirk S
Beiträge: 5754
20. Sep 2017, 17:48
Beitrag #2 von 8
Beitrag ID: #559552
Bewertung:
(2577 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#559549] Top
 
pixxxelschubser p
Beiträge: 1541
20. Sep 2017, 20:14
Beitrag #3 von 8
Beitrag ID: #559559
Bewertung:
(2569 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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) 


viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


als Antwort auf: [#559552] Top
 
faxinger666
Beiträge: 58
21. Sep 2017, 17:26
Beitrag #4 von 8
Beitrag ID: #559572
Bewertung:
(2488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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] Top
 
Ralf Hobirk S
Beiträge: 5754
21. Sep 2017, 18:10
Beitrag #5 von 8
Beitrag ID: #559575
Bewertung:
(2481 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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 ;-)

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#559572] Top
 
Kai Rübsamen  M  p
Beiträge: 4483
21. Sep 2017, 18:55
Beitrag #6 von 8
Beitrag ID: #559576
Bewertung:
(2473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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]);
}


Gruß Kai Rübsamen
_______________________
als Antwort auf: [#559575] Top
 
pixxxelschubser p
Beiträge: 1541
21. Sep 2017, 20:08
Beitrag #7 von 8
Beitrag ID: #559579
Bewertung:
(2451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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.

viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


als Antwort auf: [#559576] Top
 
faxinger666
Beiträge: 58
22. Sep 2017, 15:15
Beitrag #8 von 8
Beitrag ID: #559596
Bewertung:
(2379 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP-Frage


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] Top
 
X