Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

Hilfreiche Erklärungen und Tipps zum Lernen von Autohotkey

Moderators: just me, jNizM

haichen
Posts: 135
Joined: 09 Feb 2014, 08:24

Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

10 Dec 2016, 10:52

Ich habe hier ausprobiert ob sich Regexpression Callouts dazu eignen, Muster global zu ändern.
Nicht einfach zu ersetzen sondern dabei zu bearbeiten.
zB wird so aus

flei\u00dfige Mittzwanziger f\u00fcllt ..\u2011 \u2019 Jonas Kaufmann \u2013 Dolce Vita
fleißige Mittzwanziger füllt ..- ’ Jonas Kaufmann – Dolce Vita



Fazit: Im Prinzip geht es ganz gut.
Beachten muss man, das das Callout nur bei einem Match aufgerufen wird.
Die Ergebnisvariable sollte daher immer schonmal mit dem Haystack vorbelegt sein,
und das Callout Ergebnis nur übergeben werden wenn es nicht leer ist

außerdem muss man mit der Bennenung der Funktionen aufpassen und gleichermaßen bei der Übergabe der Variablen.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Last edited by haichen on 16 Dec 2016, 04:21, edited 3 times in total.
just me
Posts: 4284
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

10 Dec 2016, 12:40

Moin,

das ist interessant. Ich habe das vor einiger Zeit nur einmal probiert und dann wieder aufgegeben, weil es mir zu 'unübersichtlich' war.

Ein Problem sehe ich in Deinem Beispiel. Die statische Variable i in CalloutReWorkAll() wird nie wieder zurückgesetzt, wenn ihr mal der Wert 1 zugewiesen wurde. Damit laufen weitere Aufrufe eines RegEx mit diesen Callout-Funktionen eher nicht wie gewünscht.

Und noch etwas: Das ist ja eher kein Skript bzw. keine Funktion, das/die von anderen Nutzern ohne Anpassungen übernommen werden kann. Es ist für mich mehr ein Beispiel, wie man es machen kann. Ich würde es deshalb gern nach 'Tutorials' verschieben, auch wenn es ein sehr knappes ist (vielleicht sollte man die Überschrift um 'Tipps & Tricks' ergänzen, dann würde es besser passen).

Grüße,
just me
Except as noted otherwise all of my code is tested on Win 10 Pro (x64) using the current AHK version.
haichen
Posts: 135
Joined: 09 Feb 2014, 08:24

Re: Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

10 Dec 2016, 14:01

Klar, kannst du gerne verschieben. Ich hab
return hh
zu
return hh , i:=0
geändert. Dann wird i immer zurückgesetzt wenn man die Funktion außerhalb des Callouts aufgerufen wurde.
Wäre schön wenn man diese callout funktion tatsächlich komplett als Funktion zum ändern des haystacks nutzen könnte. Aber Funktion in Funktion geht ja nicht.
haichen
Posts: 135
Joined: 09 Feb 2014, 08:24

Re: Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

16 Dec 2016, 04:18

Ich habe das Beispiel auf zwei hintereinander folgende Callouts erweitert, und noch ein wenig dazu geschrieben.
just me
Posts: 4284
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit Regular Expression Callout alle Funde bearbeiten und ersetzen

16 Dec 2016, 05:10

Gut!
Except as noted otherwise all of my code is tested on Win 10 Pro (x64) using the current AHK version.

Return to “Tutorials”

Who is online

Users browsing this forum: No registered users and 2 guests