[英]How to match only the domain part of a URL with regex?
我正在編寫一個Python代碼來處理一個文本塊,在文本中,對於我來說,這些文本對URL沒有用處。 在文本塊之外我只需要域,而不是完整的URL。 輸入示例:
47.91.158.176 or 54.145.185.110 port 80 - gooolgeremf.top - GET /search.php
47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html
所以這里我只需要gooolgeremf.top
和voperforseanx.top
匹配,但我寫的正則表達式也匹配search.php
和chrome_update.html
。
我在想的是正則表達式應該在/
之后停止匹配。 但是我不知道如何實現它,特別是如何防止在第一個/
整個文本文件之后出現的匹配域。
到目前為止我的代碼中的工作方式:
regexdm="[A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,}"
dmsc=re.findall(regexdm, iocsd.read())
我建議添加分隔符條件。 如果域名可能只被空格,行的開始/結束和域前的兩個前向斜線以及后面的一個斜線所包圍,則正則表達式將是:
(?: |//|^)([A-Za-z0-9]{1,}\.[A-Za-z0-9]{1,10}\.?[A-Za-z]{1,}\.?[A-Za-z]{1,})(?: |/|$)
正則表達式不是最簡單的方法,你應該使用urlparse.urlparse
:
from urlparse import urlparse
parsed_uri = urlparse('http://voperforseanx.top/site/chrome_update.html')
print parsed_uri.netloc
給
voperforseanx.top
但是,作為參考,這里是如何使用正則表達式處理URL: 獲取URL的一部分(正則表達式)
在Python 2.7.13中,另一種方式示例(取決於輸入模式):
str = "47.90.205.113 or 35.187.59.173 port 80 - voperforseanx.top/site/chrome_update.html"
parsed_uri = str.split()[6].split('/')[0]
print parsed_uri
>> voperforseanx.top
(\b[\w\.]+\.[a-zA-Z]{2,}\b)(.+)$
在這個正則表達式中:
(\b[\w\.]+\.[a-zA-Z]{2,}\b)
部分,將匹配您正在尋找的,其余的是廢品。 為了工作,這個正則表達式需要一個gmi修飾符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.