[GastForen Programmierung/Entwicklung AppleScript Reguläre Ausdrücke: Was ist "re-compile"?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Reguläre Ausdrücke: Was ist "re-compile"?

Goar
Beiträge gesamt: 371

12. Jul 2004, 18:54
Beitrag # 1 von 6
Bewertung:
(1735 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

in der Bedienungsanleitung der Scripting Addition "Satimage" (ermöglicht u.a. Finden und Suchen/Ersetzen mit regulären Ausdrücken) wird an einer Stelle "re-compile" erwähnt; leider nicht näher erklärt.
Im Befehlsverzeichnis steht:

re_compile: compile a regular expression
 re_compile  plain text  -- the regular expression
  [case sensitive  boolean]  -- default true
  [regexpflag  plain text]  -- a subset of {"EXTENDED","NEWLINE","ICASE","NOSUB"}; default {"EXTENDED","NEWLINE"}
 Result:  re_pattern  -- an opaque pattern which may be used as the search string for "find text" and "change"

Aber hier kommt wieder meine berühmte lange Leitung zum Vorschein. Ich habe eine vage Vorstellung, worum es hier geht, mehr aber auch nicht. Erste Versuche, etwas hinter re_compile einzusetzen endeten damit, dass dieses Eingesetzte die message "re_compile" nicht versteht.

Kann jemand in groben Zügen erklären, was es mit diesem Befehl auf sich hat, wo und wie man ihn einsetzt und vielleicht noch ein kleines Beispiel dazugeben?

Danke, Goar
X

Reguläre Ausdrücke: Was ist "re-compile"?

Hans Haesler
  
Beiträge gesamt: 5804

12. Jul 2004, 22:23
Beitrag # 2 von 6
Beitrag ID: #418890
Bewertung:
(1734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

auch ich habe es nicht geschafft, mit 're_compile' etwas anfangen zu können. Dieses Verb ist keine Erfindung
von Satimage, sondern wird seit langem für sehr spezielle Regex-Konstruktionen gebraucht.

Wenn Du im Textfeld der "Google"-Website "re_compile" (mitsamt Anführungszeichen) eingibst, dann bekommst
Du innert Kürze eine Menge Resultate. Aber ein halbe Stunde später bist Du "so klug als wie zuvor" …

>Re_compile returns a pointer to a regex structure. This information is also kept in the static area used by
>re_comp(); If the fold variable is true, the compiled regular expression will match either upper or lower case.

Anregung: Frage doch bei Satimage direkt an. Der Emmanuel Lévy ist sehr auskunftsfreudig. Vielleicht kann
er Dir ein verständliches Beispiel liefern.

Hans Haesler <[email protected]>


als Antwort auf: [#418889]

Reguläre Ausdrücke: Was ist "re-compile"?

Goar
Beiträge gesamt: 371

14. Jul 2004, 19:32
Beitrag # 3 von 6
Beitrag ID: #418891
Bewertung:
(1734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

meine Recherche hatte zu ganz ähnlichen Ergebnissen geführt, wie Du sie beschreibst. Aber jetzt:

Emmanuel hat mir eine Erklärung geschickt, die ich kurz übersetzt habe:
===
Du hast Recht, die beste Dokumentation ist derzeit &#133; das Verzeichnis der Satimage osax.

Wenn Du "find text" mit einem regex-Pattern benutzt, kompiliert der Befehl Dein Pattern zunächst in irgendwas Internes der regex-Maschine (es baut Tabellen und all so Sachen), dann lässt es diesen kompilierten Ausdruck ablaufen.

Mit "re_compile" kannst Du Dein Pattern ein für alle Mal kompilieren. "find text" akzeptiert als Pattern entweder einen String oder das Ergebnis von "re_compile".

Der Gebrauch von "re_compile" empfiehlt sich, wenn Du das Pattern häufig benutzt und wenn es auf Geschwindigkeit ankommt. Und natürlich, je komplizierter der reguläre Ausdruck, desto deutlicher beschleunigt "re_compile" das Script.

Also bei einem einfachen Beispiel können wir keinen besonderen Unterschied erkennen.

---
set x to "6000000"
set theRE to "^[0-9]+"

chrono
repeat 1000 times
 find text theRE in x with regexp
end repeat
quietmsg(chrono)

set theRE to re_compile theRE

chrono
repeat 1000 times
 find text theRE in x with regexp
end repeat
quietmsg(chrono)

0.28 second without re_compile
0.25 second with re_compile
---

===
Das hört sich doch interessant an. Ich habe mir jetzt einmal Jon&#146;s Commands besorgt und Deine Bedienungsanleitung zu "the ticks". ;-)

Gruß, Goar


als Antwort auf: [#418889]

Reguläre Ausdrücke: Was ist "re-compile"?

Hans Haesler
  
Beiträge gesamt: 5804

14. Jul 2004, 22:41
Beitrag # 4 von 6
Beitrag ID: #418892
Bewertung:
(1734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

vielen Dank für Deine Nachforschungen und das Weiterleiten von Emmanuels Erklärung.

Zwei Anmerkungen zu den "Jon's Commands":
1. Leider ist der gute Jon allzu hilfreich und seine Scripting Addition konvertiert
im Hintergrund Pfade. Plötzlich findet man gewollt oder aus Versehen heraus, dass man
den Ausdruck 'file' weglassen kann. Und dann gibt man solch ein Script weiter und
prompt kommt ein Mail: "He, Dein Script funktioniert nicht!".

Um dieses Problem zu vermeiden, aktiviere ich "Jon's Commands" nur, wenn ich eine
Zeitmessung vornehmen will. Danach ab in den Papierkorb damit. Zum erneut Aktivieren:
die Datei auf den geschlossenen Systemordner ziehen, die Frage "Wollen Sie usw" mit
"OK" bestätigen. Dann in einem Skripteditor-Fenster die Rechnung 1 + 1 eintippen
und dieses Scriptchen ausführen. Damit aktualisiert das Scripting System den Inhalt
des Scripting-Additions-Ordners.

2. Die Ticks sind gut und recht, aber schon weniger präzise als die "MilliSecs.osax"
(unter Mac OS X). Zudem müssen mehrere Testläufe durchgeführt, das beste und das
schlechteste Resultat gestrichen werden, damit man einen verbindlichen Durchschnitt
ausrechnen kann. Und je nach Aufbau der Aufgabe stellt man öfters fest, dass jede
weitere Ausführung ein bisschen länger dauert.

Dennoch: ich habe dieses Hilfsmittel schon oft beigezogen, um ein Script zu optimieren.
Es ist auch möglich, die Ticks an mehreren Stellen zu messen, damit nicht relevante
Abschnitte oder auch das Anzeigen eines Dialoges (und die Reaktions-Zeit des Anwenders)
ausgeklammert werden können und so das Resultat nicht verfälschen.

Hans Haesler <[email protected]>


als Antwort auf: [#418889]

Reguläre Ausdrücke: Was ist "re-compile"?

Goar
Beiträge gesamt: 371

21. Jul 2004, 11:57
Beitrag # 5 von 6
Beitrag ID: #418893
Bewertung:
(1734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nachtrag zu re_compile.

Jetzt habe ich es einmal ausprobiert &#150; es ging nicht.
Emmanuel gefragt.
Schreibt, ich soll es mal in Smile (Scripteditor der Satimage-Software) probieren.
Da gings.
Keine Chance in Apples Scripteditor?
Antwort: "I think so", aber warum den Scripteditor verwenden und nicht Smile?

Mehr weiß ich jetzt nicht zu dem Thema.

Angenehmes Scripten, Goar


als Antwort auf: [#418889]

Reguläre Ausdrücke: Was ist "re-compile"?

Hans Haesler
  
Beiträge gesamt: 5804

21. Jul 2004, 12:35
Beitrag # 6 von 6
Beitrag ID: #418894
Bewertung:
(1734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

danke für Deine Versuche, für Deine Anfragen an Emmanuel und die Rückmeldung.

Ehrlich gesagt ist mir die Oberfläche von Smile nicht sympathisch. Doch auch der Umstieg
vom Mac-OS-9 Skripteditoren zu jenem von Mac OS X fiel mir in Vor-Jaguar-Versionen nicht
leicht. Aber jetzt in Panther sind doch einige Fortschritte sichtbar: Das Ergebnis-Fenster
ist bei Bedarf mit Button-Klick als separates Objekt zu öffnen. Das Suchen- und Ersetzen
ist sehr wertvoll. Und an die farbigen Codezeilen habe ich mich inzwischen auch gewöhnt.

Aber alles Sträuben hilft nichts: Ich werde mich nächstens trotzdem mit Smile befassen
müssen, wenn ich Scripts upgraden muss, welche so komplizierte Dialoge benötigen, dass
mit dem einfachen Pashua nichts Befriedigendes zustandegebracht werden kann.

Hans Haesler <[email protected]>


als Antwort auf: [#418889]
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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
12.03.2021 - 16.07.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 12. März 2021, 13.00 Uhr - Freitag, 16. Juli 2021, 17.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von publishingNETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: CHF 6'300.-
Dauer: 18 Tage (ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PBAS