Ich verwende einen mathematischen Parser, der% als Mod-Symbol verwendet. Ich möchte es stattdessen für das Prozentzeichen verwenden, um Benutzern zu ermöglichen, "25% * 10" oder "25% von 10" einzugeben und die Antwort "2.5" zu erhalten (sie könnten alles eingeben).Was wäre der Reguläre Ausdruck, um die Zahl vor% -Symbol in der Zeichenfolge abzurufen?
Ich würde dann die regex gefragt, um die "25%" (könnte in einem Teil der Zeichenfolge sein) und eine einfache Berechnung (25/100) und ersetzen Sie dann die 25% in der Zeichenfolge mit der berechnete Wert, der an den Mathe-Parser übergeben wird. Im Grunde mache ich einige Vorberechnungen für die Zahl vor dem Prozentzeichen, bevor ich die vollständige Zeichenfolge an den Mathe-Parser übergebe.
Ich habe immer mit Regex gekämpft und hatte gehofft, jemand könnte mir helfen.
Dank
Was ist mit 12,5%? – Andy
Oder (30 + 20)%? Diese werden ein bisschen härter. Aber das ist nicht die Frage, denke ich. – Andy
@Andy - Das ist in der Tat ein Problem. Deine Beispiele bringen uns vom Regexland in das Parserland. Idealerweise sollte der Parser vor dem% -Zeichen einen maximalen mathematischen Ausdruck annehmen, ihn auswerten und durch 100,0 teilen, um einen echten Bruchwert zu erhalten. Ich glaube, das ist unmöglich mit einem regulären Ausdruck und erfordert etwas wie eine rekursive Descent-Parser. –