[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:
(3002 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: 1708

10. Nov 2017, 00:02
Beitrag # 2 von 5
Beitrag ID: #560611
Bewertung:
(2972 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.


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:
(2936 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: 1708

10. Nov 2017, 18:21
Beitrag # 4 von 5
Beitrag ID: #560641
Bewertung:
(2900 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.


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:
(2808 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

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!