string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
Avere il seguente esempio, il risultato sarebbe "Hello World!"
, come il $1
viene sostituito con il primo gruppo (World|Universe)
, tuttavia il risultato che voglio è "Hello $1!"
gestione del testo espressione regolare sostituzione di fuga che contiene il carattere dollaro
Il Il metodo Regex.Escape
deve essere utilizzato per evitare un modello Regex, non la sostituzione, in quanto può sfuggire ad altri caratteri come le barre e altri caratteri del modello Regex. L'ovvia soluzione al mio problema è di avere la mia sostituzione uguale a "$$1"
, e raggiungerò "Hello $1!"
, ma mi chiedevo se il simbolo del dollaro è l'unico valore che devo sfuggire (supponendo che lo replacement
sia generato dall'utente e non lo conosco più avanti di tempo), o c'è una funzione di supporto che lo fa già.
Qualcuno sa di una funzione per sfuggire al valore di sostituzione utilizzato da Regex.Replace(string input, string pattern, string replacement)
?
Anche da MSDN: le sostituzioni sono gli unici elementi di linguaggio di espressioni regolari riconosciuti in un modello di sostituzione. Tutti gli altri elementi del linguaggio delle espressioni regolari, inclusi i caratteri di escape, sono consentiti solo nei modelli di espressioni regolari e non sono riconosciuti nei modelli di sostituzione. – Gebb
Questo sembra abbastanza buono per me, ho il sospetto di fare un muto ol '' replacement.Replace ("$", "$$") 'dovrebbe essere buono il 100% delle volte allora? – Matthew
Sì, 'replacement.Replace (" $ "," $$ ")' dovrebbe essere tutto ciò che serve. – dtb