특정 상황에서 다른 도메인을 가리 키도록 URL을 다시 작성하는 ASP.NET 응답 필터를 작성하고 있습니다.정규 표현식에서 부정적인 lookbehind에 대한 도움말
ASP.NET이 응답을 작성하기 때문에 내 필터가 페이지가 완전히 스트리밍되기 전에 여러 번 호출됩니다. 이것은 Regex.Replace에 대한 각각의 호출이 URL을 두 번 바꾸지 않는다는 것을주의해야한다는 것을 의미합니다 (You는 http://foo.comhttp://foo.com/path으로 끝납니다).
이 작업을 수행하려면, 나는 대체에 대한 부정적인 lookbehind 식을 사용하기 위해 노력하고있어,하지만 작동하지 않는 것 :
((?<!http://www.foo.com/)actual/url)
:이 같은 정규식을 생성
content = Regex.Replace(content,"((?<!" + newDomain + ")" + match + ")", newDomain + match);
그러나 뒤에서 보이는 것을 존중하지 않는 것으로 보입니다. 모든 것을 두 번 교체하려고합니다.
아이디어가 있으십니까?
EDIT :이 정규식은 Regex Coach와 같은 도구를 사용하여 샘플 데이터를 테스트 할 때 유용합니다.
편집 2 : 실제로 슬래시가 추가되었습니다.
에서 왔 "와 일치"않습니다 어디? 더 정확히 말하면 콘텐츠에서 URL을 구문 분석하여 콘텐츠를 가져 왔습니까? 그 "match"는 그 라인 이전에 어떤 모습입니까? – mercator
도메인이나 경로를 바꾸시겠습니까? 당신이 Regex Coach에서 기대하는 일치를 얻었지만 예상 한 대치 동작을 얻지는 못했다고 진술합니다. –
와우, 피드백없이 -1 번 모두 내 대답에. –