2012-03-08 2 views
0

내 URL이정규식 도움말 -

  • https://foo.bar.com/somedirectory/somefile.php 또는

  • http://abc.bar.co.uk/somedirectory/somefile.php

입니다 말해 도메인 이름을 제거 정규식은 얻을 것이다 무엇

  • /somedirectory/somefile.php 또는

  • somedirectory/somefile.php?

    use strict; 
    use warnings; 
    
    my @urls=("https://foo.bar.com/somedirectory/somefile.php", "http://abc.bar.co.uk/somedirectory/somefile.php"); 
    
    foreach my $url(@urls) 
    { 
        if($url=~/^http(?:s)?:\/\/[^\/]+(\/.*)$/) 
        { 
        print "$1\n"; 
        } 
        else 
        { 
        print "$url did not match!\n"; 
        } 
    } 
    

    출력은 다음과 같습니다

+1

를 사용할 수 있을까? 이 언어는 URI를 구문 분석하는 기능을 제공합니다. –

+0

"regex url"을 여기에서 찾으십시오. 수락 된 답을 가진 12 가지 이상의 질문이있을 것입니다. 참고로 ... url을 구문 분석하기 위해 선택한 언어로 주어진 메서드를 사용해야합니다. – pcalcao

+0

[URL에서 호스트 이름과 포트를 제거하는 정규식?] (http://stackoverflow.com/questions/441755/regular-expression-to-remove-hostname-and-port-from-url)의 가능한 복제본 –

답변

2

당신의 URL은 항상 하나 http:// 또는 https:// 시작한다고 가정하면,이 (당신이 언어를 지정하지 않았기 때문에 그리고, 여기에 펄 구현의) 작동합니다 :

/somedirectory/somefile.php 
/somedirectory/somefile.php 
1

코드

사용하여 자바 스크립트 (당신은 그것을 here을 테스트 할 수 있습니다) :

것은 "/somedirectory/somefile.php"를 반환하려면

var inputString = "https://foo.bar.com/somedirectory/somefile.php"; 
var regex = /https?:[\/]{2}\S*?(\/\S*)/; 
var outputString = inputString.replace(regex,"$1"); 
alert(outputString);​ 

는 "놓자/somefile.php"를 반환하려면 다음과 같이 정규식을 변경 : 다음

var regex = /https?:[\/]{2}\S*?\/(\S*)/; 

정규식

코어 정규식이다. 당신이 사용하고있는 언어이가에 따라 조금 쥐게 될 필요가있다 :

https?:[\/]{2}\S*?(\/\S*) 

FTP 사이트에 대한이를 확장하려면, 당신은 당신이 사용하는 언어

(ht|f)tps?:[\/]{2}\S*?(\/\S*)