Я пытаюсь написать регулярное выражение, чтобы переписать URL-адреса, чтобы они указывали на прокси-сервер.
bodystring = Regex.Replace(bodystring, "(src='/+)", "$1" + proxyStr);
Идея этого выражения довольно проста, в основном найти экземпляры «src = '/» или «src =' //» и вставить в этот момент URL-адрес PROXY. В целом это работает, но иногда я встречал случаи, когда буквальный «$ 1» оказывался в строке результата.
Для меня это не имеет смысла, потому что если совпадений не было, то зачем вообще что-то заменять?
К сожалению, я не могу привести простой пример, потому что пока это происходит только с очень большими строками, но я хотел бы концептуально знать, что могло бы заставить такое случиться.
Кстати, я попытался переписать это выражение, используя положительный просмотр назад, как показано ниже:
bodystring = Regex.Replace(bodystring, "(?<=src='/+)", proxyStr);
Но в результате на выходе появляется proxyStr TWICE, если входная строка содержит «src = '//». Для меня это тоже не имеет особого смысла, потому что я думал, что "src =" должен присутствовать во входных данных дважды, чтобы proxyStr дважды попал в выходные данные.