特定の状況で別のドメインを指すようにURLを書き換えるASP.NET応答フィルターに取り組んでいます。
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)
しかし、それは後ろ姿を尊重していないようで、私はすべてを二重に交換しています。
何か案は?
編集:この正規表現は、RegexCoachなどのツールを使用してサンプルデータに対してテストするときにうまく機能します。
編集2:スラッシュを追加しました、それは実際にそこにあります。