2012-02-23 3 views
0

나는 C#으로 변환하지 않는 꽤 쉬운 (imo) 정규식을 가지고있다. RegExr이 작동한다고하지만 C#으로 테스트하면 작동하지 않습니다 ... C#에서 작동하도록하려면 아무 것도 변경해야합니까?정규 표현식이 Javascript에서 C#으로 변환되지 않습니까?

정규식 :

/https://subdomain[.1]domain[.1]com/(.*)(ashx|axd)/g 

바꾸기 :

http://subdomain.domain.com/$1$2 

입력 문자열 :

<script src="https://subdomain.domain.com/ScriptResource.axd?d=SQ032obz8ZDKgHbn6XZ3X4xN0iWznAgAxgrdjOtFjVj-yUo-Lk-c2r4ciOs2uasdfjiemr4ciOs2uaGYfeYrYGiemnAQT9UzGoQVKs_JPL8l7TA1LjPYKexOcr4ciOs2uar4ciOs2uaHgpZf-tDxkb_le2NhBN0&amp;t=ffffffffb868b5f4" 
type="text/javascript"></script><script type="text/javascript"> 
//<![CDATA[ 
Sys.Application.initialize(); 
//]]> 
</script> 
+0

나쁜 !!! 나쁜!! 당신의 목표 문자열은'/'(http : //에서) !!를 포함합니다 !! 그들을 탈출 !! – Shai

+0

알다시피, 당신은 정규식에서 그들을 이스케이프시키지 않거나 다른 구분 기호를 사용하지 않고'/'를 사용할 수 없다는 것을 알고 있습니까? – knittl

+0

C# 코드를 게시 할 수 있습니까? 당신이 준 정규 표현식은'//'프로토콜 지시자가 내가 믿는 정규 표현식에 대해서만 하나의'/'로 해석 할 것이기 때문에 역시 작동하지 않을 것입니다. 닷넷 Regex 클래스에 대한 많은 문서와 그것을 사용하는 방법이 있습니다. 불행히도 Regex는 그 자체로 언어가 아니며 거의 모든 플랫폼에서 다른 구현을하고 있습니다. – Lazarus

답변

2

귀하의 정규식에 포함 야해 /와/g. 그리고 [.1] 쓰기. 난 당신이 단지에 HTTPS을 변경하려는 생각으로

HTTP 할 수 있습니다 단지 그렇게 :

이 경우
s = s.Replace("https:", "http:"); 

당신은 당신이 할 수있는 도메인을 대체 할 그 정규식 :

s = Regex.Replace(s, "https://[^/]+", "http://yourreplaced.domain.com", RegexOptions.Multiline); 
+0

이것은 실제로 작동합니다! [.1]은 여전히 ​​유효하며 바꿀 필요가 없습니다. 그러나 __all__ 사건을 대체하기 위해'/ g'이 필요하지 않습니까? – ReFocus

+0

그리고 아니요,이 예제에서는 호스트 이름을 바꿀 필요가 있습니다 ... – ReFocus

+0

'/ g'은 필요 없지만'[.1]'이 필요합니다! – ReFocus

관련 문제