string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
das folgende Beispiel in Erwägung, wäre das Ergebnis "Hello World!"
sein, da die $1
mit der ersten Gruppe (World|Universe)
ersetzt wird, aber das Ergebnis, das ich will, ist "Hello $1!"
Handhabung regex Flucht Ersatztext, der das Dollar-Zeichen enthält
Die Regex.Escape
Methode soll verwendet werden, um ein Regex-Muster, nicht die Ersetzung zu entkommen, da es andere Zeichen wie Schrägstriche und andere Regex-Muster-Zeichen entkommen kann. Die offensichtliche Lösung für mein Problem ist, meinen Ersatz gleich "$$1"
zu haben, und werde "Hello $1!"
erreichen, aber ich frage mich, ob das Dollarzeichen der einzige Wert ist, den ich entkommen muss (vorausgesetzt, replacement
ist Benutzer generiert, und ich weiß es nicht voraus der Zeit), oder gibt es eine Hilfsfunktion, die dies bereits tut.
Kennt jemand eine Funktion, um den Ersatzwert zu umgehen, den Regex.Replace(string input, string pattern, string replacement)
verwendet?
Auch von MSDN: Ersetzungen sind die einzigen regulären Sprachelemente, die in einem Ersatzmuster erkannt werden. Alle anderen Sprachelemente für reguläre Ausdrücke, einschließlich Zeichenausblendungen, sind nur in Mustern für reguläre Ausdrücke zulässig und werden in Ersatzmustern nicht erkannt. – Gebb
Das sieht gut genug für mich aus, ich vermute, einen dummen alten Ersatz zu machen. Ersetzung ("$", "$$") sollte dann gut 100% der Zeit sein? – Matthew
Ja, 'replacement.Replace (" $ "," $$ ")' sollte alles sein, was Sie brauchen. – dtb