[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt RegExp – Probleme mit match()/exec()

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

RegExp – Probleme mit match()/exec()

Ferestes
Beiträge gesamt: 21

9. Nov 2017, 20:04
Beitrag # 1 von 5
Bewertung:
(2158 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum,

ich habe ein Problem mit match()/exec(). Hintergrund ist, dass ein wirklich sehr komplexer regulärer Ausdruck zusammengesetzt wird und dann ein String damit gematcht werden soll. Allerdings hängt sich InDesign (CS6, CC 2015) dabei auf.
Code
//eventuelle Namenspräfixe 
var _npfx = "(?:[vV]on ?|[vV]on ?der ?|[vV]an ?|[vV]an ?den ?|[vV]an ?der ?)";
//Groß- und Kleinbuchstaben
var _upperCase ="["0041", "0042"]"; // und so weiter
var _lowerCase ="["0061", "0062"]"; // und so weiter
//Namen
var _surnames = "_upperCase + _lowerCase + "+"";
//regulärer Ausdruck wird kompiliert
var _refName2Grep2 = RegExp ("[au]nd +((?:" +_npfx + ")?" + _surnames + ") ,\\d{4}");
//und auf _someSting angewendet.
var _refName2 = _someString.contents.exec(_refName2Grep2);


Der Code ist vereinfacht, aber vielleicht wird das Problem klar. Ist das bekannt? Wie könnte man sonst sehr komplexe reguläre Ausdrücke auf String anwenden?

Vielen Dank!
X

RegExp – Probleme mit match()/exec()

pixxxelschubser
Beiträge gesamt: 1563

10. Nov 2017, 00:02
Beitrag # 2 von 5
Beitrag ID: #560611
Bewertung:
(2128 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hmmh?

Was genau möchtest du finden?
Was soll mit den Fundstellen passieren?
Warum zerpflückst du den Suchstring in so viele Einzelteile?

Kannst du dein Vorhaben noch etwas genauer beschreiben und ein paar (möglichst mehr als zwei) aussagekräftige Beispiele zeigen? Oder eine IDML auf einen Hoster deiner Wahl hochladen und hier verlinken?

Warum verwendest kaum Platzhalter?
Du bist dir bewusst, dass dein Grep einige falsch positive Treffer landet?

Sieh dir bitte mal den Anhang an.
Möchtest du das finden? Ist im Grunde genommen fast dein Grep, lediglich etwas zusammengesetzt und einmal ohne (magenta) und einmal mit Wortgrenzenbeschränkung (blau, das verhindert schon ein paar falsch positive Treffer)

Der Screenshot zeigt zumindest das, was ich denke, aus deinem Eingangspost herausgelesen zu haben. Ich könnte aber auch total danebenliegen - sind halt zu wenige Informationen.

Wink
Viele Grüße
pixxxelschubser




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

Isaac Newton




als Antwort auf: [#560608]
Anhang:
Prefix_mit_Namen.png (80.9 KB)

RegExp – Probleme mit match()/exec()

Ferestes
Beiträge gesamt: 21

10. Nov 2017, 09:50
Beitrag # 3 von 5
Beitrag ID: #560622
Bewertung:
(2092 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo pixxxelschubser,

danke erst einmal für die Antwort. Der reguläre Ausdruck ist so zerpflückt, weil ich zwischenzeitlich dachte, dass match() Probleme mit zu verschachtelten Ausdrücken bekommt.

Der ursprüngliche Ausdruck sieht so aus:

Code
 "(?:(?:[vV]on(?:" + _space + "der)?|[vV]an(?:" + _space + "de[nr])?|[vV]an" + _apos + "t|ter|[dD]i|[dD]e(?:" + _space + "la)?)" + _space + "+|[dD](?:" + _apos + "|e)|Ma?c|O" + _apos + "|El" + _space + ")"; //Namenspräfixe 


wobei _space wiederum verschiedene Leerräume abdeckt und _apos verschiedene Apostrophen findet.

Du hast ja mit Grep gesucht, bei match()/exec() stehen ja leider keine POSIX-Ausdrücke zur Verfügung, ebenso funktionieren \u und \l für uppercase und lowercase nicht, daher die Unicodepoints (allerdings macht das den Grep-Ausdruck leider absolut unlesbar).

Die Wortgrenzen sind in dem Fall nicht nötig. In einem ersten Schritt suche ich mit Grep im FLießtext nach Referenzen auf Literatur und speichere die Treffer in einem Array. Anschließend werte ich jeden Treffer aus, um zu prüfen, ob nur ein Autor (Autor, Jahreszahl), zwei Autoren (Autor and Autor, Jahreszahl) oder mehrere Autoren (Autor et al., Jahreszahl) gefunden wurden. Da ich hier jeweils einen String auswerten muss, muss ich mit match() oder exec() arbeiten.


als Antwort auf: [#560611]
(Dieser Beitrag wurde von Ferestes am 10. Nov 2017, 09:51 geändert)

RegExp – Probleme mit match()/exec()

pixxxelschubser
Beiträge gesamt: 1563

10. Nov 2017, 18:21
Beitrag # 4 von 5
Beitrag ID: #560641
Bewertung:
(2056 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jetzt hast du mich verwirrt!
Oder hast du die Grep bzw. Regex im Screenshot eventuell übersehen?
Und leider geht dein Antwort ein bisschen an meinen Nachfragen „vorbei“.

Ich verwende weder \u noch \l und auch keine POSIX-Ausdrücke.

Ansonsten habe ich lediglich die Buchstaben in einer Klasse gesammelt und nicht wie du die „langatmigen Unicodepoints für jeden einzelnen Buchstaben“. Und die einzelnen Teil-Suchen zusammengefügt. Die zusätzlichen Wortgrenzen sind nicht zwingend nötig, helfen aber einige falsch positive Treffer zu verhindern.

Deshalb sollten beide Regex auch in Verbindung mit exec() funktionieren. Höchstens der Ausdruck für „Gross- und Kleinschreibung ignorieren“ könnte u.U. im Skript nicht funzen. Das habe ich noch nie ausgetestet. Aber dafür gibt es ja für Regex in Javascript den Parameter match(/regex/i)

Oder vielleicht hapert es an dem bereits bei dir enthaltenen Ausdruck „nicht im Suchstring speichern“ (habe ich ebenfalls noch nie in einem Skript verwendet).

Aber vielleicht gehst du ja noch etwas genauer auf die anderen Fragen in meinem vorherigen Posting ein.

Wink
Viele Grüße
pixxxelschubser




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

Isaac Newton




als Antwort auf: [#560622]

RegExp – Probleme mit match()/exec()

Ferestes
Beiträge gesamt: 21

13. Nov 2017, 18:30
Beitrag # 5 von 5
Beitrag ID: #560676
Bewertung:
(1964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, du hast Recht. Das Zusammenfassen zu einer Klasse hat das Problem gelöst. Davor war mein Prozessor wohl überfordert. Merci!


als Antwort auf: [#560641]
X

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
17.10.2018

München
Mittwoch, 17. Okt. 2018, 10.31 Uhr

Seminar

Als „Next Generation Publishing“ (NGP) bezeichnen wir bei Cleverprinting eine Arbeitsweise, bei der Druckdaten auf moderne Art produziert werden. Für Photoshop bedeutet dies: Sie arbeiten jederzeit medienneutral mit RGB-Daten, die RGB-CMYK-Konvertierung wird von InDesign erst während der Ausgabe geleistet. Sie arbeiten nichtdestruktiv, alle Bearbeitungsschritte können zu einem späteren Zeitpunkt zurückgenommen/verändert werden. Sie arbeiten verlustfrei, Skalierungen von Bildbestandteilen können mit Smart Objects im Nachhinein verändert werden. Und: Sie arbeiten effizient, indem Sie clevere, schnelle Filter und wo immer möglich auch Skripte zur Automatisierung einsetzen.

München, Mittwoch, 17.10.2018, 9.30 Uhr bic 17.30 Uhr, Schulungsgebühr 415,31 Euro (incl 19% MwSt)

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/photoshop-next-generation/

Next Generation Publishing mit Adobe Photoshop
Veranstaltungen
18.10.2018

Online
Donnerstag, 18. Okt. 2018, 20.00 - 21.00 Uhr

Webinar

Den Start ins E-Commerce leicht gemacht

Ja

Organisator: Eric Mächler

Kontaktinformation: E-Mailinfo AT ericmaechler DOT com

https://events.genndi.com/register/818182175026318367/66670f3c07

Hier Klicken