2014-07-07 2 views
0

URL의 첫 번째 백 슬래시 뒤에있는 부분 만 일치시키는 데 도움이 필요합니다.RegEx가 URL의 첫 번째 백 슬래시 뒤의 모든 것을 매치합니다.

URL 예 : http://www.TestThis.com/Some-Data/Some-Other-Data/Even-More-Data

패턴 : ^(.*?//.*?/)(.*)$

내가 일을 할 수있는, 2 경기를 얻을 수 있지만, 정말에만 http://www.TestThis.com/

+1

당신이 합리적인 URL을 작업해야하는 경우 - (내 대답에 링크) 열린 우리당 클래스를 사용합니다. 그렇지 않으면 수용 가능한 입력과 예상 출력의 전체 목록을 보여 주도록하십시오 (예 :'//127.0.0.1/path? fake' 또는'ftp://some.random.multilevel.domain.com/foo/bar.bat). 봇 "예상)? –

답변

1

Uri.PathAndQuery 어떤 정규식 당신보다 더 좋은 방법이 후 무엇을 할 유효한 URL을 찾을 수 있습니다. 또한 DNS 이름 대신 IP의 경우, 호스트 부분에 사용 된 인코딩의 %, 포트 등을 처리합니다.

Console.Write(
    new Uri(
    "http://www.TestThis.com/Some-Data/Some-Other-Data/Even-More-Dat" 
    ).PathAndQuery); 
+0

나는 그 클래스 사용에 대해서 생각조차하지 않았다. 나는 항상 잊고있는 것 같다. 좋은! – DDiVita

1

당신은 정규식없이 시도 할 수 :

string test = "http://www.TestThis.com/Some-Data/Some-Other-Data/Even-More-Data"; 
string intermediate = test.Split(new string[] { "//" }, StringSplitOptions.RemoveEmptyEntries)[1]; 
string final = intermediate.Substring(intermediate.IndexOf('/') + 1); 
관련 문제