2013-05-30 5 views
1

코드 :URL에서 네트워크 위치를 찾을 우아

import urlparse 
url1 = 'http://try.github.io//levels/1/challenges/1' 
netloc1 = urlparse.urlparse(url1)[1] #try.github.io 

url2 = 'https://github.com/explore' 
netloc2 = urlparse.urlparse(url2)[1] #github.com 

netloc2가, 내가 원하는이다 사용 정규식, 어떻게 그것을 처리하는 경우 그러나, 나는, netloc1github.io 바랍니다.

+1

당신은 Pythonic 솔루션을 가지고 있으며 같은 것을하기위한 정규 표현식을 쓰고 싶습니다. 맞습니까? –

+0

예, 감사합니다. – liuzhijun

+2

문제는 TLD 목록이 필요하다는 것입니다. 예를 들어'foo.bar.com.br'에있는 netloc은 무엇입니까? 'foo.bar.com'와 반대입니다. 유효한 TLD 목록없이 모든 TLD에 대해이 기능을 사용할 수있는 방법은 없습니다. – Wolph

답변

0

이 정규식 URL이의 어느 try.github.io 또는 gethub.com

^https?:[\/]{2}(try[.]github[.]io|github[.]com)

enter image description here

내가 파이썬을 모르는

그래서 난 제공하고 있습니다 포함 유효성을 검사합니다

설명 regex가 어떻게 작동하는지 보여주는 php 예제.

<?php 
$sourcestring="your source string"; 
preg_match_all('/^https?:[\/]{2}(try[.]github[.]io|github[.]com)/im',$sourcestring,$matches); 
echo "<pre>".print_r($matches,true); 
?> 

$matches Array: 
(
    [0] => Array 
     (
      [0] => http://try.github.io 
      [1] => https://github.com 
     ) 

    [1] => Array 
     (
      [0] => try.github.io 
      [1] => github.com 
     ) 

) 

면책 조항

아마 당신의 urlparse 솔루션을 사용하는 것이 더 쉽습니다 후 바로 [1] 반환 된 값을 테스트하는 몇 가지 논리를 적용됩니다.