Nicht sicher, ob dies mit einem regulären Ausdruck Ersetzungsbefehl möglich ist, aber ich habe eine vorhandene Regex ersetzen, die die letzten zwei Ziffern einer Zahl in die gleichen zwei vorangestellten Ziffern konvertiert mit einem Punkt. Dies dient zur Anbindung an ein System, das Währungswerte als "2500" sendet, wobei dies "25,00" Dollar bedeutet.Bedingte Regex ersetzen, wenn Wert kleiner als "nnnn"
Meine bestehende Regex: (\d+)(\d{2})$
Mit ersetzen Syntax: $1.$2
Jetzt habe ich ein Problem, aber, wenn ein Wert durch als „50“ nur zum Beispiel gesendet wird, diese 0,50 und meine regex darstellen könnte, werden scheitern, weil nach 1+ numerisch auf der linken und zwei numerischen genau am Ende der Zeichenfolge gesucht wird.
Wie kann ich all diese Umstände abdecken und habe meine regex thusly ersetzen ersetzen:
2500 = 25.00
500 = 5.00
50 = 0.50
5 = 0.05
Thanks again, Graham
Update: Für diejenigen fragen, warum dies nicht eine Kluft und String-Format sein kann Job ist, weil ich benutzerdefinierte Programmierung vermeiden muss, um dies zu erreichen. Es muss im Idealfall eine Regex- "Regel" sein, die zusammen mit anderen Regex-Definitionen in einer Datenbank definiert ist, da sie für ein generisches Übersetzungssystem verwendet wird. Es werden eingehende Daten übersetzt, die in mehreren Formattypen vorkommen können, wobei im Allgemeinen ein Feld von "101" in "101A" umgewandelt wird, aber in diesem besonderen Fall für diesen Datentyp ist das Hinzufügen von Werten erforderlich.
Zweites Update: Ich habe mehr darüber nachgedacht, weil ich an eine Datenbank gebunden bin, würde jemand einen besseren Weg, als mit einem% wackyMoney% oder ein anderer ‚token‘ definierte in dem db Feld sehen und Testen Sie dann, ob wir dieses Token im Code treffen, um die C# -String-Formatierung anzuwenden und zu teilen.
Eine Regex wird verwendet, weil dies für ein generisches Übersetzungssystem ist und die Übersetzungsregel in der Datenbank für eine Menge eingehender Daten definiert wird, wie ich weiß, in einer normalen Umgebung. Aber das ist nicht normal :) – GONeale
Wow, tolle Antwort. Ich benutze die .NET-Regex-Engine, und ich glaube nicht, dass wir Befehle in Regex so nennen könnten! Wäre nett. Ich denke jedoch, dass Sie definitiv auf etwas mit dem Semikolon abgegrenzten Regex gesetzt sein könnten, ich habe definitiv die Macht, den Regex-Parser ändern zu können, um mehrere Regex-Sätze nach Semikolon zu analysieren, wenn ich nicht mehrzeilig bin out of the box, schauen Sie mal vorbei - vielen Dank. – GONeale
Ich bin froh zu hören, dass ich geholfen habe. – derobert