Estoy intentando escribir una expresión regular para reescribir las URL para apuntar a un servidor proxy.
bodystring = Regex.Replace(bodystring, "(src='/+)", "$1" + proxyStr);
La idea de esta expresión es bastante simple, básicamente encontrar ejemplos de "src = '/" o "src =' //" e introduzca una dirección URL de proxy en ese punto. Esto funciona en general, pero ocasionalmente he encontrado casos donde un "$ 1" literal terminará en la cadena de resultados.
Esto no tiene sentido para mí porque si no hubiera coincidencia, ¿por qué reemplazaría algo en absoluto?
Desafortunadamente no puedo dar un ejemplo simple de esto, solo ocurre con cadenas muy grandes hasta ahora, pero me gustaría saber conceptualmente qué podría hacer que suceda esto.
Como acotación al margen, he intentado reescribir esta expresión utilizando una búsqueda hacia atrás positiva de la siguiente manera:
bodystring = Regex.Replace(bodystring, "(?<=src='/+)", proxyStr);
Pero esto termina con proxyStr dos veces en la salida si la cadena de entrada contiene "src =" //". Esto tampoco tiene mucho sentido para mí porque pensé que "src =" tendría que estar presente en la entrada dos veces para que proxyStr terminara dos veces en la salida.
¿Podría proporcionar un ejemplo del valor 'proxyStr'? – dasblinkenlight
Gracias por la respuesta. ¿Puedes por favor aclarar? No estoy seguro de cómo podría usar un "\ 1" para resolver este problema. Más arriba quise decir que "$ 1" a veces terminará en mi cadena de resultados, como en "... nueva Imagen(). $ 1myproxy/proxy? Url = .....". – Locksleyu
proxyStr = "10.15.15.15:8008/proxy?url=http://"; Sin embargo, he visto el segundo problema (varias instancias de proxyStr en el resultado) suceden de manera uniforme incluso con proxyStr = "PROXY". – Locksleyu