2011-09-15 18 views
2

我正在嘗試創建一個正則表達式,它將匹配url中第三個實例,即只有網站的名稱本身才會被記錄下來,沒有別的。正則表達式與某個事物的第三個實例匹配嗎? (python)

所以http://www.stackoverflow.com/questions/answers/help/通過正則表達式被投入將http://www.stackoverflow.com

我已經打有關與他們自己拿出後:

base_url = re.sub(r'[/].*', r'', url) 

但所有這確實是減少鏈接爲http : - 所以很明顯我需要匹配/ - 任何人都可以解釋我將如何做到這一點?

謝謝!

回答

9

建議你用urlparse用於解析URL:

In [1]: from urlparse import urlparse 

In [2]: urlparse('http://www.stackoverflow.com/questions/answers/help/').netloc 
Out[2]: 'www.stackoverflow.com' 

.netloc包括如果存在的話(例如www.stackoverflow.com:80)的端口號;如果您不需要端口號,請改用.hostname

+0

ahh我從來不知道這個存在,讓生活變得容易多了!非常感謝=) – Jingo

3

裏urlparse會的工作,但由於您最初詢問的正則表達式,嘗試積極的比賽,而不是消極替代:

match = re.match(r'.+://[^/]+', url); 
baseUrl = match.group(); 

這會抓住它後http://(或https://,或ftp://),和一切直到第一個/

http://www.tutorialspoint.com/python/python_reg_expressions.htm

+1

這工作完美 - 但我想我會去與urlparse - 非常感謝,雖然=) – Jingo

相關問題