Zeichenkette im Regex-Austausch erfassen

10

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:

%Vor%

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?

    
lurker 24.05.2016, 01:40
quelle

2 Antworten

1

Nachdem ich ein wenig mit der Klasse RxMatcher experimentiert habe, habe ich die folgende Änderung am RxMatcher#copyStream:to:replacingMatchesWith: Selektor vorgenommen:

%Vor%

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:

%Vor%

Ergebnisse in:

%Vor%     
lurker 30.05.2016, 03:09
quelle
0

Haben Sie die Regex-Hilfe überprüft? Es gibt keine #replacingAllRegex: , aber der Matcher hat #subexpression:

    
Stephan Eggermont 28.05.2016 09:01
quelle

Tags und Links