Sagen wir, ich habe Zeichenfolgen wie
%Vor% und ich möchte die Teile zwischen Anführungszeichen in b:foo="hop"
oder b:bar="hu?"
mit einer Funktion ersetzen.
Es ist einfach, einen regulären Ausdruck zu erstellen, um die Übereinstimmung und das Submatch zu erhalten, zum Beispiel
%Vor% und dann ReplaceAllStringFunc
aufzurufen, aber das Problem ist, dass der Callback das ganze Match und nicht das Submatch empfängt:
Wie kann ich das Submatch ersetzen?
Im Moment habe ich keine bessere Lösung gefunden, als mich m
innerhalb des Callbacks mit einem Regex zu zerlegen und den String nach der Verarbeitung des Submatch neu aufzubauen.
Ich hätte einen alternativen Ansatz mit einem positiven Blick hinterher verwendet, wenn sie in Go verfügbar wären, aber das ist nicht der Fall (und sie sollten sowieso nicht notwendig sein).
Was kann ich hier tun?
EDIT: Hier ist meine aktuelle Lösung, die ich vereinfachen möchte:
%Vor%Was mich stört ist, dass ich die Regex zweimal anwenden muss. Das klingt nicht richtig.