Я работаю над фильтром ответов ASP.NET, который переписывает URL-адреса для указания на другой домен в определенных ситуациях.
Поскольку ASP.NET разбивает на части записи ответа, мой фильтр вызывается несколько раз, прежде чем страница полностью передается в потоковом режиме. Это означает, что мне нужно быть осторожным, чтобы каждый вызов Regex.Replace не заменял дважды URL-адрес (в итоге вы получите http://foo.comhttp://foo.com/path).
Для этого я пытаюсь использовать отрицательное выражение для замены, но похоже, что оно не работает:
content = Regex.Replace(content,"((?<!" + newDomain + ")" + match + ")", newDomain + match);
Это создает регулярное выражение, подобное:
((?<!http://www.foo.com/)actual/url)
Тем не менее, кажется, что я не уважаю взгляд позади, и я заменяю все дважды.
Есть идеи?
РЕДАКТИРОВАТЬ: Это регулярное выражение прекрасно работает, когда я использую такой инструмент, как Regex Coach, чтобы проверить его на примере данных.
РЕДАКТИРОВАТЬ 2: Добавил косую черту, он на самом деле там.