Regex-Herausforderung: Ändern der Formate von negativen Zahlen

9

Zunächst einmal muss ich mich entschuldigen, dass ich (noch) nicht so viel über reguläre Ausdrücke weiß. Ich habe gesucht und gesucht, aber noch keine Lösung gefunden, die zu meiner speziellen Herausforderung passt.

Jetzt kommt die Frage:

Ich experimentiere gerade mit der Entwicklung eines Parsers (also selbst schreiben). Ich möchte dies unter Berücksichtigung von regulären Ausdrücken tun. Bis jetzt habe ich ziemlich viel geschafft, jedoch stoße ich auf ein kleines Problem. Das unäre Minuszeichen und das binäre Minuszeichen.

Was ich vor etwa zehn Jahren an der Universität gelernt habe, ist, dass dies auf dem Kontext basieren sollte. Es gibt jedoch auch einen einfachen Trick, den ich benutze, wenn ich es manuell mache und jedes unäre Minus in ein anderes Format schreibe:

%Vor%

oder

%Vor%

Etwas komplizierter:

%Vor%

Nun, hier ist meine Frage: Gibt es eine Möglichkeit, einen regulären Ausdruck zu schreiben, der einen unären minus Ausdruck in einen binären minus Ausdruck übersetzt, indem Sie Klammern hinzufügen und eine 0 , wie in den oben angegebenen Beispielen?

Vielleicht gibt es auch einen anderen Weg, aber ich bin hier ein bisschen voreingenommen ...

Kommentar: Zuerst fing ich an, alle Minuszeichen durch das Wort MINUS wie:

zu ersetzen %Vor%

Dies ergibt einen neuen AusdruckBuffer, der wie folgt aussieht:

%Vor%

Nun versuche ich die binären '-' Operatoren mit der folgenden Regex zu erfassen:

%Vor%

Und das ergibt:

%Vor%

Der erste MINUS ist eindeutig ein unärer Operator (aber der zweite ist eindeutig nicht!), also suche ich jetzt nach einer Möglichkeit, diesen in das folgende (erste) Format umzuschreiben:

%Vor%

Aber hier bin ich fest, um das erste unäre Minus mit einem binären Minus zu behandeln:

%Vor%

Irgendwelche Ideen, wie man eine Regex dafür verwendet?

    
RvdV79 10.02.2017, 15:04
quelle

1 Antwort

3

Ja, Sie können das tun, aber Sie müssen die Ersetzungsoperation aufrufen, solange Änderungen vorgenommen werden, da die folgende Regex nur einen einzelnen unären Operator ersetzt:

%Vor%

DEMO

Ausgabe:

%Vor%     
Vera rind 10.02.2017, 16:12
quelle

Tags und Links