Was ich aus der Pharo-Dokumentation über Regex entnehmen kann, kann ich ein reguläres Ausdrucksobjekt wie zum Beispiel definieren:
%Vor%Und ich kann den übereinstimmenden Regex durch einen String ersetzen:
%Vor%Was ergibt: "mah blah meh".
So weit, so gut. Aber ich möchte das 'bar'
ersetzen und das Präfix allein lassen. Daher brauche ich eine Variable, um die eingefangenen Klammern zu behandeln:
Und ich möchte das Ergebnis: 'foomeh blah remeh'
. Das gibt mir aber nur: '%1meh blah %1meh'
. Ich versuchte auch, , oder
\1
, oder oder
{1}
zu benutzen und erhielt die literale Zeichenkettenersetzung, z. B. , 'meh blah meh'
als Ergebnis.
Ich kann das in GNU Smalltalk einfach mit:
machen %Vor%Aber ich kann nirgends in der Pharo Regex-Dokumentation finden, die mir sagt, wie ich das in Pharo machen kann. Ich habe auch für Pharo regex gegoogelt, aber nichts gefunden. Ist diese Fähigkeit Teil der RxMatcher-Klasse oder einer anderen Pharo Regex-Klasse?
Nachdem ich ein wenig mit der Klasse RxMatcher
experimentiert habe, habe ich die folgende Änderung am RxMatcher#copyStream:to:replacingMatchesWith:
Selektor vorgenommen:
Und dann "Zugriff" Kategorie:
%Vor% Mit dieser Änderung kann ich einen Lookback in der Ersetzungszeichenfolge mithilfe des Smalltalk String#format:
-Musters für Argumente durchführen:
Ergebnisse in:
%Vor% Haben Sie die Regex-Hilfe überprüft? Es gibt keine #replacingAllRegex:
, aber der Matcher hat #subexpression: