string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
Tener el siguiente ejemplo, el resultado sería "Hello World!"
, como el $1
es reemplazado con el primer grupo (World|Universe)
, sin embargo, el resultado que quiero es "Hello $1!"
Manejo de texto de sustitución de escape de expresiones regulares que contiene el carácter dólar
El El método Regex.Escape
está destinado a ser utilizado para escapar de un patrón Regex, no de la sustitución, ya que puede escapar de otros caracteres, como barras y otros caracteres del patrón Regex. La solución obvia a mi problema es tener mi reemplazo igual a "$$1"
, y alcanzará "Hello $1!"
, pero me preguntaba si el signo de dólar es el único valor que tengo para escapar (suponiendo que replacement
es generado por el usuario, y no lo sé por adelantado de tiempo), o hay una función auxiliar que ya lo hace.
¿Alguien sabe de una función para escapar del valor de reemplazo que usa Regex.Replace(string input, string pattern, string replacement)
?
También desde MSDN: las sustituciones son los únicos elementos del lenguaje de expresiones regulares que se reconocen en un patrón de reemplazo. Todos los demás elementos del lenguaje de expresiones regulares, incluidos los escapes de caracteres, solo se permiten en los patrones de expresiones regulares y no se reconocen en los patrones de reemplazo. – Gebb
Esto se ve lo suficientemente bueno para mí, sospecho que hacer un tonto 'reemplazo'. Reemplazar ("$", "$$") 'debería ser bueno el 100% del tiempo, entonces? – Matthew
Sí, 'replacement.Replace (" $ "," $$ ")' debería ser todo lo que necesita. – dtb