2013-02-12 3 views
0

"http"또는 "https"로 시작하고 특정 도메인을 포함하는 모든 URL과 일치하는 Regex를 찾고 있습니다. 도메인이 "stackoverflow.com"이라면 문자열 (모든 .com, .net, .org 등이 일치해서는 안됨)에서 모든 도메인 및 하위 도메인 일치를 추출 할 수 있어야하며 다음과 같이 목록에 추가해야합니다. 모든 경기를 반복합니다. 어떻게해야합니까?모든 하위 도메인과 일치하는 정규식

지금까지 본 최고의 내가 찾은 해결 방법 ("somestring"라는 문자열을 검색하여 목록 "으로 myList"에 결과를 추가)

 Regex r = new Regex(@"(?<Protocol>\w+):\/\/(?<Domain>[\[email protected]][\w.:@]+)\/?[\w\.?=%&=\[email protected]/$,]*"); 
     Match m = r.Match(somestring); 
     while (m.Success) 
     { 
      if ((m.Value).Contains("stackoverflow.com")) 
      { 
      myList.Add(m.Value); 
      } 
     m = m.NextMatch(); 
     } 

답변

1

이 당신에게 무엇에 시작을 줄 수도있다 수행

https?://(www\.)?([^.]+)\.([^.]+.)+

설명 :

https?://

http 또는 https와 일치합니다. www가 만약

(www\.)?

. 존재한다면, 그것과 일치합니다.

([^\s.]+)

는 (하나 이상의 비 점 공백이 아닌 문자로 구성) 웹 사이트의 이름과 일치합니다.

(\.[^\s.]+)+

하나 개 이상의 도메인/하위 일치 (도트로 구성되어, 하나 이상의 비 - 도트 비 공백 문자).

+0

http://msdn.microsoft.com/en-us/library/system.uri.aspx 감사합니다 확인하고 내가 한 번, 내가 다시 –

3

당신은 URL이 stackoverflow.com 또는 그 하위 도메인의 페이지 (예 : m.stackoverflow.com)에 있는지 여부를 테스트하려고합니까?

URL을 구문 분석에 대한

new Uri("http://stackoverflow.com/questions/14827755/regex-which-matches-any-subdomain").Host 

그런 다음 호스트 속성이 '.stackoverflow.com'로 끝나거나 정확히 'stackoverflow.com'에 해당하는지 여부를 테스트하는 방법.

내가 그것을 알아낼 수 있는지 볼 것이다,

+0

일이 올바른지 게시 할 예정입니다 - 당신은 이것에 대한 정규식이 필요하지 않습니다. – DanielB

+0

대령 패닉, 문자열에서 모든 일치 항목을 추출하고 싶습니다. 문자열이 "http : //www.http : //stackoverflow.comaaaaa kkkkhttp : //moo.stackoverflow.comlll ggggghttp : //www.something.stackoverflow 인 경우 .comggggg ""http : // stackoverflow.com ""http : // moo.stackoverflow.com "및"http : // www.something.stackoverflow.com "을 추출하여 내 목록에 추가하고 싶습니다. 이 줄에는 객차와 새 줄이 포함될 수 있습니다. 내 (업데이트 된) 질문에 게시 한 솔루션은 정확히 수행하지만 성능에 큰 문제가 발생합니다. 희망이 좀 명확한 –

+0

또 다른 예 -이 웹 페이지의 원본을 문자열로 저장하면 모든 유효한 단일 URL (http 또는 https로 시작)을 추출하고 "stackoverflow.com"을 포함하고 내 이름으로 저장합니다. 명부. "stackoverflow.com"은 "google.com" "moo.net"등과 같은 도메인 이름 일 수 있습니다. 도움을 주신 모든 분들께 감사드립니다. –

관련 문제